我有以下json回复:
{
"elements":
[
{
"id": "1234",
"Key": "1234-name2",
"name": "name2",
"projectName": "TestProject",
},
{
"id": "5678",
"applicationKey": "5678-name2",
"name": "name2",
"projectName": "TestProject2",
},
{
"id": "9101112",
"applicationKey": "9101112-name3",
"name": "name3",
"projectName": "TestProject3",
},
],
"totalSize": 3
}
收到回复后,我已将其转换为字符串:
String PaListContent = getContent(PaListResponse);
private static String getContent(HttpResponse response) {
HttpEntity entity = response.getEntity();
if (entity == null) return null;
BufferedReader reader;
try {
reader = new BufferedReader(new InputStreamReader(entity.getContent()));
String line = reader.readLine();
reader.close();
return line;
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
现在,我想在字符串中搜索项目名称(例如" Testproject2")并希望拥有属性" id"和"名称"同样。
我已尝试过
JSONObject jsonObject = new JSONObject(PaListContent);
JSONObject myResponse = jsonObject.getJSONObject("elements");
//JSONArray tsmresponse = (JSONArray) myResponse.get("listTsm");
ArrayList<String> list = new ArrayList<String>();
for(int i=0; i<tsmresponse.length(); i++){
list.add(tsmresponse.getJSONObject(i).getString("name"));
}
System.out.println(list);
但问题是,我总是得到&#34; org.json.simple.JSONObject无法转换为org.json.simple.JSONArray&#34;。我认为问题是,因为我的json是一个数组,但我怎样才能获得属性?
最诚挚的问候!
答案 0 :(得分:1)
您的elements
是一个JSONArray,但是您尝试将其解析为JSONObject,请更改您的代码:
JSONObject jsonObject = new JSONObject(PaListContent);
JSONArray myResponse = jsonObject.getJSONArray("elements");
//JSONArray tsmresponse = (JSONArray) myResponse.get("listTsm");
ArrayList<String> list = new ArrayList<String>();
for(int i=0; i<myResponse.length(); i++){
list.add(myResponse.getJSONObject(i).getString("name"));
}
System.out.println(list);
这将按预期工作
答案 1 :(得分:0)
但问题是,我总是得到
org.json.simple.JSONObject
无法投射to org.json.simple.JSONArray
。我认为问题是,因为我的json是一个数组,但我怎样才能获得属性?
使用JSONArray
代替
JSONArray myResponse = jsonObject.getJSONArray("elements");
Here您可以找到更多示例