Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java解析另一个Json数组Json.simple中的Json数组_Java_Arrays_Json_Parsing_Json Simple - Fatal编程技术网

Java解析另一个Json数组Json.simple中的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

我正在使用JSON.simple lib并尝试解析来自HTTPGET的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;
           }}}}
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使我们的工作变得简单。格森也是如此。