Java 无法读取所有JSON属性
我有以下json jsonobject。我可以阅读一些但不是所有的属性。如果我打印JSONObj,我会得到: JSONObj:Java 无法读取所有JSON属性,java,json,Java,Json,我有以下json jsonobject。我可以阅读一些但不是所有的属性。如果我打印JSONObj,我会得到: JSONObj: { "@priority":"50", "flags":{ "scheduleStatus":"DURING" }, "@startDate":"2013-10-15T12:30:57.493Z", "description":"UserReconcile", "@distributionStrategy":"OFFER"
{
"@priority":"50",
"flags":{
"scheduleStatus":"DURING"
},
"@startDate":"2013-10-15T12:30:57.493Z",
"description":"UserReconcile",
"@distributionStrategy":"OFFER",
"name":"UserReconcile",
"itemContext":{
"appName":"MyProcess",
"appInstance":"pvm:0a12iq",
"activityName":"UserReconcile",
"appID":"_-hYCETV8EeOr4-yR8gXd7g",
"activityID":"pvm:001im4"
}
}
我能够获得@priority、description和其他一些值。我无法获取最后一个键“activityID”
我的代码得到的值为ok:
priority=jsonObj.getString("@priority");
startDate =jsonObj.getString("@startDate");
workDesc=jsonObj.getString("description");
但这失败了:
amxref = jsonObj.getString("activityID");
以下是JSON的扩展视图:
{
"@priority": "50",
"flags": {
"scheduleStatus": "DURING"
},
"@startDate": "2013-10-15T12:30:57.493Z",
"description": "UserReconcile",
"@distributionStrategy": "OFFER",
"name": "UserReconcile",
"itemContext": {
"appName": "MyProcess",
"appInstance": "pvm:0a12iq",
"activityName": "UserReconcile",
"appID": "_-hYCETV8EeOr4-yR8gXd7g",
"activityID": "pvm:001im4"
}
}
你能发现问题吗
是activityID
不是jsonObj
对象的键
你应该做:
JSONObject itemContext = jsonObj.getJSONObject("itemContext");
String activityID = itemContext.getString("activityID");
这是格式化的JSON响应,
你得到的是价值观
priority=jsonObj.getString("@priority");
startDate =jsonObj.getString("@startDate");
workDesc=jsonObj.getString("description");
因为它们在java对象中直接可用
但是
失败,因为它位于名为:itemContext的对象内
现在请将其转换为JSONObject,然后对其进行迭代以获得所需的元素尝试获取itemContext和process activityIDI的值,我现在设法找到了这种方法:)。我做了jsonObj=getJSONObject(“header”).getJSONObject(“itemContext”))并将其放在json对象中,然后使用jsonObj.getString(“activityID”);这起作用了。基本上,我的问题是理解和识别json obj,并从根开始导航。记住这一点,如果你不知道你的反应是什么,那么你会得到不同的json反应。我想您可以要求根对象像messagetype一样进行标识,然后从那里进行解析?好吧,JSON是一种数据交换格式,因此双方应该事先就将要发送给对方的数据达成一致。如果数据格式不同,无论您使用的是什么技术,都会出错。谢谢您的回复,我设法解决了这个问题。你是对的。
priority=jsonObj.getString("@priority");
startDate =jsonObj.getString("@startDate");
workDesc=jsonObj.getString("description");
amxref = jsonObj.getString("activityID");