2012-10-18 46 views
0

我想fromJson類來分析我的JSON,但我無法理解應該是我的類的結構,如果我的JSON是象下面這樣:如何解析JSON與fromJson方法

String json = "{"Result":{"Status":"SUCCESS","Message":""},"Response":{"Token":"ca0d7507-3907-4eed-af19-ad256bc71088","ZoneUrl":"https:\/\/qa.tritononline.com\/","CustomerID":1,"UserID":29,"DefaultLanguageID":1,"ZoneID":1,"IsTritonIntegrated":false,"Language":[{"LanguageId":1,"Language":"English","IsSelected":false}]}}" 

這是什麼我想要做

Response res = new Response(); 
     Gson gson = new Gson(); 
     res = gson.fromJson(json, Response.class); 

我想知道我應該在Response類中採用什麼變量。

+1

你爲什麼不使用的JSONObject和JSONArray令牌數據解析其從API 1開始可用? – Carnal

+0

@Carnal如何做,我不知道這個 –

+0

你想從你的jsonobject得到什麼。 – Harish

回答

2
String data = yourdata; 
JSONObject jsonData = new JSONObject(data); 
JSONOBject jsonResult = new JSONObject(jsonData.getString("Result")); 
JSONOBject jsonResponse = new JSONObject(jsonData.getString("Response")); 
String status = jsonResult.getString("Status"); 

一個簡短的例子,你應該看到現在的模式。否則,只是谷歌爲JSONObjectJSONArray

+0

謝謝Carnal它的作品:) –

+1

好,所以你應該接受答案,如果它是有用的。也讓其他人在未來獲得動力來幫助你。 – Carnal

+0

當然,感染我試了兩次,但警報顯示,它太早接受它;) –

1
String json = "{"Result":{"Status":"SUCCESS","Message":""},"Response":{"Token":"ca0d7507-3907-4eed-af19-ad256bc71088","ZoneUrl":"https:\/\/qa.tritononline.com\/","CustomerID":1,"UserID":29,"DefaultLanguageID":1,"ZoneID":1,"IsTritonIntegrated":false,"Language":[{"LanguageId":1,"Language":"English","IsSelected":false}]}}" 

String[] langid=null; 

JSONObject object; 
JSONObject resultobj = new JSONObject(json); 

object = resultobj; 

JSONObject responseobj = object.getJSONObject("Response"); 
responseobj.getString("UserID"); 

像上面的,你可以讓你在你的JSONObject什麼都想要。

如果你想從你的JSONARRAY獲得任何東西,你需要按以下方式在 。

JSONArray languageobj = object.getJSONArray("Language"); 

langid = new String[languageobj.length()]; 

for(int i=0;i<language.length();i++) 
{ 
JSONObject e = languageobj.getJSONObject(i); 
langid[i] = e.getString("LanguageId"); 
} 

上面所示的方式,你會從你的JSONArray所有的值。

1

下面是一個示例,讓您開始將json字符串解組爲一個實際的對象結構。你會明白的。

import com.google.gson.Gson; 
import com.google.gson.annotations.SerializedName; 

// getters and setter omitted for brevity 
public class Main { 

    public static void main(String[] args) { 
     String json = "{\"Result\":{\"Status\":\"SUCCESS\",\"Message\":\"\"},\"Response\":{\"Token\":\"ca0d7507-3907-4eed-af19-ad256bc71088\",\"ZoneUrl\":\"https://qa.tritononline.com/\",\"CustomerID\":1,\"UserID\":29,\"DefaultLanguageID\":1,\"ZoneID\":1,\"IsTritonIntegrated\":false,\"Language\":[{\"LanguageId\":1,\"Language\":\"English\",\"IsSelected\":false}]}}"; 
     Gson gson = new Gson(); 
     ServerResponse sr = gson.fromJson(json, ServerResponse.class); 
     // do stuff with sr 
    } 

    public static class ServerResponse { 
     public Result Result; 
     public Response Response; 
    } 

    public static class Result { 
     public String Status; 

     // if you want to follow java conventions (lowercase field name) then 
     // you need to add this annotation 
     @SerializedName("Message") 
     public String message; 
    } 

    public static class Response { 
     public String Token; 
     public String ZoneUrl; 
     // ... etc 
    } 
} 
+0

你怎麼知道如果演員成功或沒有......我假設如果沒有空(C#背景),但是,gson.fromJson(「{壞json}」似乎總是返回一個不可空對象.. .. – codeputer

1

如果你仍然要堅持GSON

 MyType fromJson = gsonHelper.fromJson("{'Result':{'Status':'SUCCESS','Message':''},'Response':{'Token':'ca0d7507-3907-4eed-af19-ad256bc71088','ZoneUrl':'https://qa.tritononline.com/','CustomerID':1,'UserID':29,'DefaultLanguageID':1,'ZoneID':1,'IsTritonIntegrated':false,'Language':[{'LanguageId':1,'Language':'English','IsSelected':false}]}}", MyType.class); 
    System.out.println(fromJson.getResponse().getToken()); 
    System.out.println(fromJson.getResponse().getZoneUrl()); 

public class MyType 
{ 
    private MyResult Result; 
    private MyResponse Response; 
    public MyResult getResult() 
    { 
     return Result; 
    } 
    public void setResult(MyResult result) 
    { 
     Result = result; 
    } 
    public MyResponse getResponse() 
    { 
     return Response; 
    } 
    public void setResponse(MyResponse response) 
    { 
     Response = response; 
    } 
} 



public class MyResult 
{ 
    private String Status; 
    private String Message; 
    public String getStatus() 
    { 
     return Status; 
    } 
    public void setStatus(String status) 
    { 
     Status = status; 
    } 
    public String getMessage() 
    { 
     return Message; 
    } 
    public void setMessage(String message) 
    { 
     Message = message; 
    } 
} 




public class MyResponse 
{ 
    private String Token; 
    private String ZoneUrl; 
    public String getToken() 
    { 
     return Token; 
    } 
    public void setToken(String token) 
    { 
     Token = token; 
    } 
    public String getZoneUrl() 
    { 
     return ZoneUrl; 
    } 
    public void setZoneUrl(String zoneUrl) 
    { 
     ZoneUrl = zoneUrl; 
    } 
} 
1

這裏中號只顯示高達從respons ::

jsonObject = new JSONObject(json); 
jSONObject object = jsonObject.getJSONObject("Response"); 

String attr1 = object.getString("Token"); 
Log.i("value for token",""+object);