gpt4 book ai didi

Java解析另一个Json数组json.simple中的Json数组

转载 作者:行者123 更新时间:2023-12-02 08:42:21 25 4
gpt4 key购买 nike

我正在使用 JSON.simple lib 并尝试解析来自 HTTP GET 的 JSON 响应。它工作正常,但我很难解码以下结构

"example": [
{
"param1": 4.88,
"param2": 60,
"param3": [
{
"param3_1": 501,
"param3_2": "Rain",
}
],
},

我成功地使用以下代码提取了 param1 和 param2:

            JSONObject jo = (JSONObject) new JSONParser().parse(jsonString);
JSONArray ja;
Iterator<Map.Entry> itMap;
Iterator itArray;

ja = (JSONArray) jo.get("example");
if (ja != null) {
itArray = ja.iterator();
while (itArray.hasNext()) {
ExampleClass e = new ExampleClass();
itMap = ((Map) itArray.next()).entrySet().iterator();
while (itMap.hasNext()) {
Map.Entry pair = itMap.next();
switch (pair.getKey().toString()) {
case "param1":
e.param1 = (double)pair.getValue();
break;
case "param2":
e.param2 = (long)pair.getValue();
break;
case "param3":
.....
break;
default:
break;
}}}}

有人知道如何设置迭代器来获取 param3 值吗?

最佳答案

如果您使用像 GSON 这样的库,这会容易得多。但是,如果您希望按原样继续,以下代码将提取 param3 中的内容。这不是推荐的方法,因为如果节点内的属性发生更改,则必须更改代码。

因此,下次请尝试使用 JSON Parser

                        case "param3":
JSONArray jsonArray = ( JSONArray ) pair.getValue();
for( Object object : jsonArray )
{
JSONObject jsonObject = ( JSONObject ) object;
jsonObject.keySet().forEach( o ->
{
if( "param3_1".equalsIgnoreCase( o.toString() ) )
{
// extract your value here
long next = ( long ) jsonObject.get( o );
System.out.println( next );
}
else if( "param3_2".equalsIgnoreCase( o.toString() ) )
{
// extract your value here
String next = String.valueOf( jsonObject.get( o ) );
System.out.println( next );
}
} );
}
break;

跟进此link如果你想添加 GSON 到此。这是一个非常简单直接的教程

关于Java解析另一个Json数组json.simple中的Json数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61305029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com