Java解析另一个Json数组Json.simple中的Json数组
我正在使用JSON.simple lib并尝试解析来自HTTPGET的JSON响应。它工作得很好,但我很难解码以下结构Java解析另一个Json数组Json.simple中的Json数组,java,arrays,json,parsing,json-simple,Java,Arrays,Json,Parsing,Json Simple,我正在使用JSON.simple lib并尝试解析来自HTTPGET的JSON响应。它工作得很好,但我很难解码以下结构 "example": [ { "param1": 4.88, "param2": 60, "param3": [ { "param3_1": 501, "param3_2": "Rain", } ], }, 我使用以下代码成功提取了param
"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;
}}}}
JSONObject jo=(JSONObject)新建JSONParser().parse(jsonString);
杰索纳雷;
迭代器itMap;
迭代器itArray;
ja=(JSONArray)jo.get(“示例”);
如果(ja!=null){
itArray=ja.iterator();
while(itArray.hasNext()){
ExampleClasse=新ExampleClass();
itMap=((Map)itArray.next()).entrySet().iterator();
while(itMap.hasNext()){
Map.Entry pair=itMap.next();
开关(pair.getKey().toString()){
案例“param1”:
e、 param1=(双精度)pair.getValue();
打破
案例“2”:
e、 param2=(长)pair.getValue();
打破
案例“3”:
.....
打破
违约:
打破
}}}}
有人知道如何设置迭代器来获取param3值吗?如果使用像GSON这样的库,这会容易得多。但是,如果您希望继续,下面的代码将提取
param3
中的内容。这不是推荐的方法,因为如果节点中的属性发生更改,代码将不得不更改
因此,下次请尝试使用JSON解析器
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;
如果您希望将GSON添加到此中,请继续此操作。这是一个非常简单和直接的教程为什么不编写一个POJO,然后使用GSON?有什么显著的区别吗?或者为什么我应该使用它而不是json。简单?POJO使您的生活越来越简单,代码更干净,更不复杂。请与gson一起研究pojo。@Mitch您的问题听起来像是为什么我应该使用集合而不是实现自己的LinkedList或Hashmap。当然,您可以实现LinkedList或Hashmap,但我们使用集合API使我们的工作变得简单。格森也是如此。