2016-06-20 9 views
0

Ich versuche, ein JSON in meiner Android App zu analysieren, erhalte ich Json richtig, aber wenn ich versuche, es zu analysieren scheint es nicht gut zu parsen!Json Objekt ist nicht in Android Analysieren

ist dies die json Ich erhalte:

"GetAdResult": { 
"Action": null, 
"ActionValue": null, 
"BgColor": "blue", 
"CampId": 19, 
"CampType": "cpm", 
"ClickAddress": null, 
"EndAnimation": null, 
"ExplainText": "", 
"ImageType": null, 
"ImageUrlBanner": null, 
"ImageUrlLargeBanner": null, 
"ImageUrlMediumRectangle": null, 
"ImageUrlFullBanner": null, 
"ImageUrlLeaderBoard": null, 
"LogoUrl": "", 
"MainText": "", 
"PackageName": "", 
"ReplaceText": "", 
"StartAnimation": null, 
"VideoUrl": null, 
"type":"ad" 
"atag":null, 
"message":"success", 
"pixel":null, 
"script":null, 
"token":null 
} 

und das ist, wie ich es bin versucht zu analysieren:

public class JsonObjectSend 
{ 
    private static final String TAG_action = "Action"; 
    private static final String TAG_acValue = "ActionValue"; 
    private static final String TAG_bg = "BgColor"; 
    private static final String TAG_id = "CampId"; 
    private static final String TAG_ctype = "CampType"; 
    private static final String TAG_adr = "ClickAddress"; 
    private static final String TAG_endAnim = "EndAnimation"; 
    private static final String TAG_expText = "ExplainText"; 
    private static final String TAG_imType = "ImageType"; 
    private static final String TAG_imgUBanner = "ImageUrlBanner"; 
    private static final String TAG_imgULBanner = "ImageUrlLargBanner"; 
    private static final String TAG_imgUMRect = "ImageUrlMediumRectange"; 
    private static final String TAG_imgUFBanner = "ImageUrlFullBanner"; 
    private static final String TAG_imgULeadBrd = "ImageUrlLeaderBoard"; 
    private static final String TAG_logoU = "LogoUrl"; 
    private static final String TAG_mainText = "MainText"; 
    private static final String TAG_packName = "PackageName"; 
    private static final String TAG_repText = "ReplaceText"; 
    private static final String TAG_startAnim = "StartAnimation"; 
    private static final String TAG_videoU = "VideoUrl"; 
    private static final String TAG_type = "type"; 
    private static final String TAG_atag = "atag"; 
    private static final String TAG_msg = "message"; 
    private static final String TAG_pix = "pixel"; 
    private static final String TAG_scrpt = "script"; 
    private static final String TAG_tkn = "token"; 

    public void sendobj() 
    { 
     JSONObject root = new JSONObject(); 
     JSONObject reqBody = new JSONObject(); 

     try { 
      reqBody.put("DeviceId", "sdasda"); 
      reqBody.put("AppId", "ECC7BCE40126408386BCFCF8AB9187E7"); 
      reqBody.put("AdType", "text"); 
      reqBody.put("Location", "35.7209331,51.472983"); 
      reqBody.put("UserOperator", "Irancell"); 
      reqBody.put("Ip", "127.0.0.1"); 
      reqBody.put("NetworkType", "3G"); 
      reqBody.put("DeviceType", "Android"); 
      reqBody.put("DeviceBrand", "Samsung"); 
      reqBody.put("Width", "0"); 
      reqBody.put("Height", "0"); 
      reqBody.put("TestMode", "true"); 
      root.put("request", reqBody); 

     } 
     catch (JSONException e) 
     { 
      e.printStackTrace(); 
     } 
     String tag_string_req = "Send_Object"; 

     JsonObjectRequest Req = new JsonObjectRequest(Request.Method.POST, AppConfig.API_URL, root, new Response.Listener<JSONObject>() 
     { 
      @Override 
      public void onResponse(JSONObject response) 
      { 
       try 
       { 
        JSONObject jObj = response; 
        JSONObject GetAdResult = jObj.getJSONObject("GetAdResult"); 
        Log.d("GetAdResult", GetAdResult.toString()); 
        String action = GetAdResult.getString(TAG_action); 
        String actionvalue = GetAdResult.getString(TAG_acValue); 
        String bg = GetAdResult.getString(TAG_bg); 
        String campid = GetAdResult.getString(TAG_id); 
        String camptype = GetAdResult.getString(TAG_ctype); 
        String clickadr = GetAdResult.getString(TAG_adr); 
        String endanim = GetAdResult.getString(TAG_endAnim); 
        String exptext = GetAdResult.getString(TAG_expText); 
        String imgtype = GetAdResult.getString(TAG_imType); 
        String imgurlbanner = GetAdResult.getString(TAG_imgUBanner); 
        String imgurllargebanner = GetAdResult.getString(TAG_imgULBanner); 
        String imgurlmedrectangle = GetAdResult.getString(TAG_imgUMRect); 
        String imgurlfullbanner = GetAdResult.getString(TAG_imgUFBanner); 
        String imgurlleaderboard = GetAdResult.getString(TAG_imgULeadBrd); 
        String logourl = GetAdResult.getString(TAG_logoU); 
        String maintext = GetAdResult.getString(TAG_mainText); 
        String packagename = GetAdResult.getString(TAG_packName); 
        String replacetext = GetAdResult.getString(TAG_repText); 
        String startenim = GetAdResult.getString(TAG_startAnim); 
        String videourl = GetAdResult.getString(TAG_videoU); 
        String type = GetAdResult.getString(TAG_type); 
        String atag = GetAdResult.getString(TAG_atag); 
        String msg = GetAdResult.getString(TAG_msg); 
        String pixel = GetAdResult.getString(TAG_pix); 
        String script = GetAdResult.getString(TAG_scrpt); 
        String token = GetAdResult.getString(TAG_tkn); 
        Log.d("hg3uewygrhefkj","ufdjklc"); 
        Log.d("action", action); 
        Log.d("actionvalue",actionvalue); 
        Log.d("Back",bg); 
        /* 
         String errorMsg = jObj.getString("error_msg"); 
         Log.d("Debug", errorMsg); 
        }*/ 
       } 
       catch (JSONException e) 
       { 
        e.printStackTrace(); 
       } 
      } 
     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d("error", "Error"); 
       Log.i("onErrorResponse", error.toString()); 
       NetworkResponse response = error.networkResponse; 
       if (error instanceof ServerError && response != null) { 
        try { 
         String res = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); 
         // Now you can use any deserializer to make sense of data 
         JSONObject jsonbody = new JSONObject(res); 
        } catch (UnsupportedEncodingException e1) { 
         // Couldn't properly decode data to string 
         e1.printStackTrace(); 
        } catch (JSONException e2) { 
         // returned data is not JSONObject? 
         e2.printStackTrace(); 
        } 
       } 
      } 
     }); 


     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(Req, tag_string_req); 
    } 


}//class end 

aber wenn ich versuche es die Saiten Log.d ist nichts in meinem logcat. Wie sonst soll ich so etwas tun?

+0

Zuerst adResult nicht groß schreiben, es ist ein Objekt, keine Klasse. –

+0

und zweitens? @ JonathanJeffrey – Neshat

+0

Ich glaube, dass Sie jObj.getJSONObject() überhaupt nicht aufrufen müssen, weil Sie alle Daten auf der obersten Ebene setzen –

Antwort

1

Ich schlage vor, dass Sie ein POJO erstellen, um dieses JSON-Objekt darzustellen, und verwenden Sie Gson Bibliothek zum Parsen.

+0

Guter Vorschlag, aber OP bittet um Lösung nicht Option. – Apurva

0

In Ihrer JSON-Antwort gibt es kein GetAdResult-Objekt, auf das Sie sich beziehen. Mit dem obigen Code sollte "GetAdResult" als Antwort kommen und es sollte Root-Element sein.

Entfernen Sie einfach "GetAdResult", weil es nicht als Root-Element da ist. Versuchen Sie mit -> JSONObject GetAdResult = jObj.getJSONObject();

Es gibt Ihnen Json-Objekt und dann können Sie alle String-Elemente erhalten.

+0

Würden Sie bitte meine bearbeitete Frage ansehen? Ich habe json bearbeitet, ich sollte erhalten. kannst du mir sagen, wie ich es jetzt plz analysieren? – Neshat

+0

Jetzt gibt es kein Problem. Fügen Sie einfach "{" und "}" um Ihren json hinzu. GetAdResult sollte auch in geschweiften Klammern eingeschlossen sein. JSONObject GetAdResult = jObj.getJSONObject ("GetAdResult"); Diese Anweisung wird dann funktionieren. – Ani

1

Ich habe eine Antwort auf here, die Ihnen helfen könnte. Also in Ihrem Fall, wenn Sie wollen "BgColor" erhalten, können Sie dies tun:

public String parseJSONForTranslation(String jsonString) { 
try { 
    JSONObject object = (JSONObject) new JSONTokener(jsonString).nextValue(); 
    return object.getJSONObject("GetAdResult").getString("BgColor"); 
} 
catch (JSONException e) { 
    return null; 
} 

}

0

Versuch unter Code

public String parseJSON(String jsonString) { 

try {

JSONObject object = new JSONObject(jsonString); 
JSONObject adResultObj=object.optJSONObject("GetAdResult"); 
String bgColor=adResiltObj.optString("BgColor"); 
String campId=adResiltObj.optString("CampId"); 

} catch (Exception e) { 

    return null; 
} 

In Ihrem Code ersetzen Sie einfach Ihre erste Zeile mit meiner ersten Zeile dh ersetzen Belo w

JSONObject jObj = Antwort;

mit

JSONObject Objekt = new JSONObject (response);

Verwandte Themen