2017-10-04 45 views
2

歷史回調如下所示,我需要解析Object響應(消息),下面給出了哪個響應以供參考。 對象消息 - 產生沒有任何關鍵字的嵌套數組和帶有關鍵字作爲消息的嵌套對象的參數。如何解析來自pubnub歷史回調的回調數據?

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); 
     } 
    }); 

這是我的對象響應消息。

響應: -

[        //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 

如何解析這個響應。

+0

的可能的複製[如何解析JSON(HTTPS的孩子://計算器.com/questions/2591098/how-to-parse-json) – Selvin

回答

5

您可以使用下面的代碼

呼叫parseJson()successCallback方法內部解析您的JSON,並通過message.toString()解析方法是這樣的:

public void successCallback(String channel, Object message) { 
    super.successCallback(channel, message); 
    Log.e(TAG, "successCallback: History Messages" + message); 
    parseJson(message.toString()); 
} 

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(); 
    } 
} 
+2

謝謝@ akhilesh0707 – Raj

0

第一所有這些都不是有效的JSON,也許這是解析它的麻煩。

當你得到一個有效的json(你可以檢查它是否是一個有效的json在這裏https://jsonlint.com/),你需要先將它從一個字符串轉換爲一個json對象,然後讓每個孩子和每個孩子直到你得到整個對象爲止。

你應該使用一些JSON解析器像這樣的:http://json.parser.online.fr/以幫助您瞭解的對象是什麼

好運

+0

如果您刪除了Raj添加的用於理解數據的意見,那麼它是有效的JSON。儘管如此,它在歷史迴應中並未如此描述。 –