0

我正在尝试使用 org.json.JSONObject 库从 json 响应中提取特定数据这是我的 json 响应:

{
"facets": {
"application": [
  {
    "name": "38",
    "distribution": 1
  }
],
"node": [
  {
    "name": "frstlwardu03_05",
    "distribution": 1
  }
],
"area": [
  {
    "name": "x",
    "distribution": 1
  }
],
"company": [
  {
    "name": "war001",
    "distribution": 1
  }
]
},
"duObjects": [
 {
  "id": "TASK|TSK(ZRM760J)(000)(ZRM760JU00)(000)|ZSRPSRM000",
  "name": "TSK(ZRM760J)(000)(ZRM760JU00)(000)",
  "mu": "ZSRPSRM000",
  "label": "",
  "session": "ZRM760J|000",
  "sessionLabel": "SAP SRM Achats frais generaux execution",
  "uprocHeader": "ZRM760JU00|000",
  "uprocHeaderLabel": "Header for SRM760J",
  "uprocHeaderType": "CL_INT",
  "domain": "M",
  "domainLabel": "",
  "application": "38",
  "applicationLabel": "magasin",
  "highlightResult": {
    "name": "name",
    "word": "TSK"
  }
}
],
"totalCount": 1,
"pageSize": 10,
"pageCurrent": 1,
"pageNb": 1
}

这是我用来将 URL 调用转换为 jsonobject 的方法:

public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException    
{    
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-     
8")));
  String jsonText = readAll(rd);
  JSONObject json = new JSONObject(jsonText);
  return json;
} finally {
  is.close();
}
}

当我调用此方法时,我能够获取 Duobject 中的数据:

public static void main(String[] args) throws IOException, JSONException {
JSONObject json = readJsonFromUrl("http://frstmwarwebsrv.orsyptst.com:9000/duobject?      
searchString=TSK(ZRM760J)(000)(ZRM760JU00)
(000)&filterchecks=nameJob,nameWF,nameSWF,application,domain&p.index=0&p.size=10");
System.out.println(json.getJSONArray("duObjects"));


} 

无论如何我只能提取 DuObjects 的名称字段吗?

4

3 回答 3

1

1:您的完整响应是 JSON OBJECT

2:如果有任何元素写成

"some key name " : { " some value " }

这是一个 JSON 对象

3:如果有任何元素被写成

 "some key name " :  " some value " 

这是您可以通过的 json 对象中的值

jsonObject.getString("key name")

4:如果任何元素被写成

"some key name " : [ " some value " ]

那么这是一个 JSON 数组,您必须将其放入 JSON ARRAY 中,然后通过

jsonObject.getJSONARRAY("key name for JSON ARRAY IN RESPONSE ")

然后你可以遍历 JSON ARRAY 的元素

`jsonArrayObj.get(0);`
于 2013-10-29T12:04:35.627 回答
1

您可以使用

System.out.println(json.getJSONArray("duObjects").getJSONObject(0).getString("name"));

得到名字。

于 2013-10-29T10:59:23.380 回答
0

您可以使用 Jackson 库转换为 java。Jackson api 提供注释级别,它会自动将 json 转换为 pojo 对象,并将对象转换为 json,反之亦然。参考这个链接。您可以对此有所了解

http://wiki.fasterxml.com/JacksonSampleSimplePojoMapper

http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

于 2013-10-29T11:00:10.033 回答