0
{
    "Items": [{
            "__type": "Section1:#com.test.example",
            "Info": {            
            }, {
            "__type": "Section2:#com.test.example2",
            "Allergy": [{


            }]

            }
      }]

}

我如何解析上面的 JSON 对象,以便我得到 Info 项和 Allergy 项....

JSONObject documentRoot = new JSONObject(result);
JSONArray documentChild = documentRoot.getJSONArray("Items");
JSONObject child = null;
for (int i = 0; i < documentChild.length(); i++) {
    child = documentChild.getJSONObject(i);

}
4

1 回答 1

2

这是有效的 JSON:在此处检查有效性:http: //jsonlint.com/

{
    "Items": [
        {
            "__type": "Section1:#com.test.example",
            "Info": {}
        },
        {
            "__type": "Section2:#com.test.example2",
            "Allergy": [
                {}
            ]
        }
    ]
}

尝试 :

public static final String TYPE_KEY = "__type";
public static final String TYPE1_VAUE = "Section1:#com.test.example";
public static final String TYPE2_VAUE = "Section2:#com.test.example2";


public static final String INFO_KEY = "Info";
public static final String ALLERGY_KEY = "Allergy";

....

String infoString = null;
JSONArray allergyArray = null;

for (int i = 0; i < documentChild.length(); i++) {
    child = documentChild.getJSONObject(i);

    final String typeValue = child.getString(TYPE_KEY);

    if(TYPE1.equals(typeValue)) {
        infoString = child.getString(INFO_KEY);
    }else if(TYPE2.equals(typeValue)) {
        allergyArray = child.getJSONArray(ALLERGY_KEY);
    }
}

if(null != infoString) {
    // access the 'Info' value in 'infoString'
}

if(null != allergyArray) {
    // access the 'Allergy' array in 'allergyArray'
}

...

希望这可以帮助!

于 2013-04-13T23:03:34.923 回答