使用Java从JSONArray获取元素和属性

时间:2014-09-29 05:45:19

标签: java xml json

我有以下JSONArray:

[
    {
        "test":{
            "page":"Apple",
            "ms":"234"}
        },
    {   
        "check":{
            "page":"Apple",
            "ms":"234"
        }
    }
]

这里说“test”和“check”是父元素,会有很多像这样的元素。所以我必须循环遍历它们中的每一个并且必须得到if的子元素,如果它与名称匹配。我是JSON的新手,所以不知道它是如何工作的。下面是它应该如何工作的简单算法。

Loop through each elements:
    switch(parent_name){
       case "test":
          get child information like:
              if(attribute == "page"){
                  get text which is "Apple"
              }
          break;
       default:
          break;
    }

这是应该如何运作的。我试过用XML。但不是JSON。下面是xml代码:

Element docEle = doc.getDocumentElement();
NodeList nl = docEle.getChildNodes();

if (nl != null && nl.getLength() > 0) {
    for (int i = 0; i < nl.getLength(); i++) {
        if (nl.item(i).getNodeType() == Node.ELEMENT_NODE) {
            Element ele = (Element) nl.item(i);
                    switch(ele.getNodeName()){
                            case "Click":
                                ele.getAttributes().getNamedItem("object").getNodeValue();
                                break;
                            case "Open":
                                ele.getAttributes().getNamedItem("page").getNodeValue();
                                break;
                            case "CheckElementPresent":
                        ele.getAttributes().getNamedItem("object").getNodeValue();
                                break;
                            default:
                                break;
                        }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以将其用作:

JSONArray jsonArray = data; //here data is JSON array you are getting from any source

你需要添加JSONException because when we get JSONObject from JSONArray`它可以抛出错误。

然后只是迭代它:

for( int i = 0 ; i < jsonArray.length() ; i++ ){
      try {
           JSONObject object = jsonArray.getJSONObject(i);
           if( ! object.isNull("test") ){
                JSONObject j = object.getJSONObject("test");
                System.out.println(j.getString("page"));
                System.out.println(j.getString("ms"));
            }
            if( ! object.isNull("check") ){
                JSONObject j = object.getJSONObject("check");
                System.out.println(j.getString("page"));
                System.out.println(j.getString("ms"));
            }
       } catch (JSONException e) {
              e.printStackTrace();
       }
}

还有问题然后发布给我。