【问题标题】:I have a JSON string with some arrays in it. I want to iterate and get their elements and their values. This is how my file looks like:我有一个 JSON 字符串,里面有一些数组。我想迭代并获得它们的元素和它们的值。这是我的文件的样子:
【发布时间】:2018-02-28 09:17:21
【问题描述】:
{
    "results": [{
        "statement_id": 0,
        "series": [{
            "name": "sampleMeasurement1",
            "columns": ["time", "disk_type", "field1", "field2", "field3", "field4", "hostname"],
            "values": [
                ["2018-02-28T06:50:35.435Z", null, 12212, 22.44, "thisIsString", false, "server001"],
                ["2018-02-28T06:50:35.464Z", "HDD", 112, 21.44, "thisIsString1", true, null],
                ["2018-02-28T06:50:35.497Z", null, 12212, 22.44, "thisIsString", false, "server001"],
                ["2018-02-28T06:50:35.572Z", "HDD", 112, 21.44, "thisIsString1", true, null]
            ]
        }]
    }]
}

【问题讨论】:

  • 到目前为止你尝试过什么?你有什么问题?
  • 他现在尝试使用 BackSlash - 如果你明白我的意思
  • 用gson试试吧!
  • 使用下面的链接我尝试迭代 JSON 字符串。 stackoverflow.com/questions/6697147/… 但是,无法迭代上面提到的 json 字符串。此数据来自 influxdb
  • 在您的值数组列表中也尝试发送标签。!有价值观!

标签: java


【解决方案1】:

假设您的 JSON 对象保存在文件“simple.json”中,您可以按如下方式遍历属性值对:

JSONParser parser = new JSONParser();

Object obj = parser.parse(new FileReader("simple.json"));

JSONObject jsonObject = (JSONObject) obj;

for(Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext();) {
    String key = (String) iterator.next();
    System.out.println(jsonObject.get(key));
}

或者

您应该改为从字符串创建一个 JSONArray,然后遍历该数组。示例:

String jsonString = "<your-json-string>"

try {
    // create the json array from String
    JSONArray jsonRules = new JSONArray(jsonString);
    // iterate over it 
    for (int i=0; i<jsonRules.length();i++){
        JSONObject obj = jsonRules.get(i);
        ....
        ....
    }
} catch (JSONException e){
    e.printStackTrace();
}

【讨论】:

    【解决方案2】:
    package com.influxdb.json;
    
    import java.util.Arrays;
    import java.util.List;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    public class ParseNestedJson {
    
        public static void main(String[] args) {
            try {
                String jsonString="[{\"statement_id\":0,\"series\":[{\"name\":\"sampleMeasurement1\",\"columns\":[\"time\",\"disk_type\",\"field1\",\"field2\",\"field3\",\"field4\",\"hostname\"],\"values\":[[\"2018-02-28T09:47:21.699Z\",null,12212,22.44,\"thisIsString\",false,\"server001\"],[\"2018-02-28T09:47:21.729Z\",\"HDD\",112,21.44,\"thisIsString1\",true,null],[\"2018-02-28T09:47:21.763Z\",null,12212,22.44,\"thisIsString\",false,\"server001\"],[\"2018-02-28T09:47:21.797Z\",\"HDD\",112,21.44,\"thisIsString1\",true,null]]}]}]";
                /**
                 *  create the json array from String
                 */
                JSONArray jsonRules = new JSONArray(jsonString);
                /**
                 *  iterate over it 
                 */
                JSONArray jarray=null;
                for (int i=0; i<jsonRules.length();i++){
                    JSONObject obj = (JSONObject) jsonRules.get(i);
                    System.out.println("series:::"+obj.getJSONArray("series"));
                    jarray=obj.getJSONArray("series");
                }
                    System.out.println("$$$$$$$$ COLUMNS $$$$$$$$");
    
                for (int i=0; i<jarray.length();i++){
                    JSONObject obj = (JSONObject) jarray.get(i);
                    System.out.println("columns:::"+obj.getJSONArray("columns"));
    
                    int count=obj.getJSONArray("columns").length();
                    for (int j=0; j<count;j++){
                          System.out.println("columns(j):::"+obj.getJSONArray("columns").getString(j));
                    }
                    System.out.println("$$$$$$$$ VALUES $$$$$$$$");
                    System.out.println("values:::"+obj.getJSONArray("values"));
                    int cnt=obj.getJSONArray("values").length();
                    for (int j=0; j<cnt;j++){
                          System.out.println("values(j):::"+obj.getJSONArray("values").get(j));
                          JSONArray jarr=obj.getJSONArray("values");
                          /**
                           * System.out.println(jarr.get(j));
                           */
                          parseSquareBracketJson(jarr.get(j).toString());
                    }
                }
            } catch (JSONException e){
                e.printStackTrace();
            }
    
        }
    
        public static void parseSquareBracketJson(String string) {
            /**
             * Remove square brackets
             */
            string = string.substring(1, string.length()-1);
            /**
             * Remove qutation marks
             */
            string.replaceAll("\"", "");
            /**
             * turn into array
             */
            String[] array = string.split(",");
            /**
             * Turn into list
             */
            List<String> list = Arrays.asList(array);
            System.err.println(list);
            /**
             * list.forEach(x -> System.err.println(x));
             */
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      相关资源
      最近更新 更多