2017-10-04 1 views
2

Rappel d'historique est montré ci-dessous, j'ai besoin d'analyser la réponse de l'objet (message) quelle réponse est donnée ci-dessous pour référence. Message d'objet - paramètres qui produisent un tableau imbriqué sans mot-clé et objet imbriqué avec le mot-clé comme message.Comment analyser les données de la réponse de rappel de l'historique 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); 
     } 
    }); 

Voici mon message de réponse d'objet.

Réponse: -

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

Comment analyser cette réponse.

+0

double possible de [Comment analyser JSON] (https: // stackoverflow .com/questions/2591098/how-to-parse-json) – Selvin

Répondre

5

Vous pouvez analyser votre JSON en utilisant ci-dessous le code

Appel parseJson() dans votre méthode successCallback et passer message.toString() pour analyser la méthode comme ceci:

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

méthode 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

Merci @ akhilesh0707 – Raj

0

d'abord tout ceci n'est pas un JSON valide, c'est peut-être de cette façon que vous avez du mal à l'analyser. Quand vous obtiendrez un json valide (et vous pouvez vérifier s'il s'agit d'un json valide ici https://jsonlint.com/), vous devrez d'abord le lancer à partir d'une chaîne en tant qu'objet json, puis obtenir chaque enfant et chaque enfant d'un enfant et ainsi de suite jusqu'à ce que vous obtenez l'objet entier.

vous devez utiliser un analyseur de JSON comme celui-ci: http://json.parser.online.fr/ pour vous aider à comprendre ce que l'objet est un enfant de ce que

bonne chance

+0

Il est valide JSON si vous supprimez les commentaires que raj ajouté ce qu'il a fait comme un moyen de donner un sens aux données. Il n'est pas présenté de cette façon dans la réponse de l'histoire. –