历史回调如下所示,我需要解析对象响应(消息),下面给出了响应以供参考.对象消息 - 产生没有任何关键字的嵌套数组的参数和带有关键字作为消息的嵌套对象.
pubnub.history(request_id, true, 100, new Callback() {
@Override
public void successCallback(String channel, Object message) {
super.successCallback(channel, message);
Log.e(TAG, "successCallback: History Messages" + message);
}
@Override
public void errorCallback(String channel, PubnubError error) {
super.errorCallback(channel, error);
Log.e(TAG, "successCallback: History Messages error" + error);
}
});
Run Code Online (Sandbox Code Playgroud)
这是我的对象响应消息.
响应:-
[ //array 1
[ // array 2
{ //obj 1
"message":{
"message":"Hai",
"timestamp":1507105493379,
"type":"SENT",
"userId":137
},
"timetoken":15071054937865507
},
{ //object 2
"message":{
"message":"How are you ?",
"timestamp":1507105503320,
"type":"SENT",
"userId":137
},
"timetoken":15071055037143632
},
{ //object 3
"message":{
"message":"Fyn",
"timestamp":1507105505628,
"type":"SENT",
"userId":137
},
"timetoken":15071055060355900
}
], //array 1 end
15071054937865507,
15071055060355900
]
//array 2 end
Run Code Online (Sandbox Code Playgroud)
如何解析此响应.
您可以使用以下代码解析您的JSON
parseJson()在你的successCallback方法中调用并传递message.toString()给这样的解析方法:
public void successCallback(String channel, Object message) {
super.successCallback(channel, message);
Log.e(TAG, "successCallback: History Messages" + message);
parseJson(message.toString());
}
Run Code Online (Sandbox Code Playgroud)
JsonParse方法:
private void parseJson(String jsonStr) {
try{
JSONArray jsonArray = new JSONArray(jsonStr);
JSONArray innerJsonArray = jsonArray.getJSONArray(0);
for(int i = 0; i < innerJsonArray.length(); i++) {
JSONObject jsonObject = innerJsonArray.getJSONObject(i);
JSONObject jsonObjectMessage = jsonObject.getJSONObject("message");
String msg = jsonObjectMessage.getString("message");
//TODO you can get all other fields
}
}catch (JSONException e){
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |