【问题标题】:parse json using java (simplejson)使用 java (simplejson) 解析 json
【发布时间】:2014-06-17 01:15:05
【问题描述】:

我需要解析从 YQL 获得的 json,但我遇到了麻烦,因为我没有得到我需要的结果。我正在使用简单的 json (https://code.google.com/p/json-simple/wiki/DecodingExamples) 并尝试遵循文档。问题是他们展示的例子非常有限(我对 json 很陌生)。我想提取数组中的所有内容(Sy、Date、O、H、L、C 和 V)。在文档中,他们展示了如果 json 对象只是一个数组,如何从数组中提取元素,但我有一个数组 + 顶部的一些额外内容:

{"query"
        {"count":200,"created":"2014-06-17T00:46:43Z","lang":"en-GB","results"

这是完整的 json 对象,我如何只提取数组?

{"query"
    {"count":200,"created":"2014-06-17T00:46:43Z","lang":"en-GB","results"
        {"array":[{"Sy":"Y","Date":"2010-03-10","O":"16.51","H":"16.94","L":"16.51","C":"16.79","V":"33088600"},
                  {"Sy":"Y","Date":"2010-03-09","O":"16.41","H":"16.72","L":"16.40","C":"16.53","V":"20755200"},
                  {"Sy":"Y","Date":"2010-03-08","O":"16.32","H":"16.61","L":"16.30","C":"16.52","V":"30554000"}
        ]}}}

【问题讨论】:

    标签: java json parsing yql


    【解决方案1】:

    我使用https://code.google.com/p/org-json-java/downloads/list

    这很简单

    try{
            String json = "JSON source";
            JSONObject j = new JSONObject(json);
            JSONArray arr = j.getJSONObject("query").getJSONObject("results").getJSONArray("array");
            for(int i=0; i<arr.length(); i++){
                JSONObject obj = arr.getJSONObject(i);
                String sy = obj.getString("Sy");
                String date = obj.getString("Date");
                String o = obj.getString("O");
                String h = obj.getString("H");
                String l = obj.getString("L");
                String c = obj.getString("C");
                String v = obj.getString("V");
            }
        }
        catch(JSONException e){
    
        }
    

    【讨论】:

      【解决方案2】:

      你必须逐个提取你需要的数组。

      JSONParser parser=new JSONParser();
      String s="{YOUR_JSON_STRING}";
      JSONArray array=parser.parse(s).get("query") //"query"
                      .get("result") // "query->result"
                      .get("array"); // THE array you need
      

      请注意,您可能需要使用 try...catch... 块来处理异常。

      由于你使用的是java,我强烈推荐gson,它是google写的。它可以直接将json转换为object,这意味着您不需要一步步深入json内部的数组。 https://code.google.com/p/google-gson/

      一般来说,你可以使用gson通过jsonparser逐段解析json,或者用gson将整个json转换成一个对象。

      【讨论】:

      • 谢谢你的建议,我去看看!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多