0

我想通过 fromJson 类解析我的 json,但是如果我的 json 如下所示,我无法理解我的类的结构应该是什么:

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 类中使用什么变量。

4

5 回答 5

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

于 2012-10-18T10:50:36.513 回答
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 中获取所有值。

于 2012-10-18T10:58:14.453 回答
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
    }
}
于 2012-10-18T10:58:21.677 回答
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;
    }
}
于 2012-10-18T10:59:37.417 回答
1

这里 m 显示仅解析来自响应的令牌数据::

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

String attr1 = object.getString("Token");
Log.i("value for token",""+object);
于 2012-10-18T11:06:42.813 回答