2013-10-17 106 views
1

IM序列化JSON有效载荷再次使用JSON挣扎:( 原来这里是回应:解析Java中

{"xml-fragment":{"workItem":{"@id":"251","@version":"74"},"presentation":{"@formIdenitifier":"1.0.0.201310151421/openspaceGWTPull_DefaultChannel/.default/Npda/NpdaProcess/UserReconcile/UserReconcile.gwt.json","@type":"GWT_FORM","@version":"1.0.0.201310151421","@activityName":"UserReconcile"},"workTypeDetail":{"@typePiled":"false","@pilingLimit":"0","@uid":"WT__RIoPEDWTEeOr4-yR8gXd7g","@version":"1.0.0.201310151421"},"payloadModel":{"serializedPayload":"{items:[{\"$param\":\"BankReconInput\",\"mode\":\"IN\",\"$value\":[{\"bankAccountTx_pk\":\"55213\",\"amount\":\"10099\",\"reference\":\"ImAmReference\",\"date\":\"2013-10-15\",\"reconType\":\"?\",\"amxcaseref\":\"pvm:0a12iq\",\"$type\":\"coza.npda.bom.BankTransaction\"}]}]}","@payloadMode":"JSON"}}} 

我想例如从serializedPayload获取量的值的问题是,它不是。JSON对象,如果我尝试:

obj = new JSONObject(jsonResp).getJSONObject("xml-fragment").getJSONObject("payloadModel"); 

这个返回到我serializedPayload为一个字符串,@payloadMode作为字符串

我想:

obj = new JSONObject(jsonResp).getJSONObject("xml-fragment").getJSONObject("payloadModel").getJSONObject("serializedPayload"); 

它确认serializedPayload不是json对象。

我看了下这个例子:http://developer.android.com/reference/org/json/JSONTokener.html 但它的数据并不像我的那么复杂,我正在努力寻找如何做到这一点的java示例。

请任何人都可以帮忙。

回答

0

您不需要示例,您需要查看JSON并思考一会儿。

serializedPayload不是一个JSON对象开始与,它真的有另一块JSON的内部编码,有点像俄罗斯套娃(坦率地说,这是一个可憎)的字符串。

你需要采取的字符串,然后再分析它,使用其他的JSONObject,排序:

String payload = data..getJSONObject("xml-fragment").getJSONObject("payloadModel").getString("serializedPayload"); 
JSONObject theRealData = new JSONObject(payload);