Json string to java object

≡放荡痞女 提交于 2019-12-13 06:24:13

问题


I'm having following class

public class ReturnData {
    public ReturnData() {
        OperationResult = Result.Failed;
        Messages = "An Error Occured";
        UpdateAvailable = "0";
        ResultData = "";
    }

    public Result OperationResult;
    public String Messages;
    public String UpdateAvailable;
    public Object ResultData;
}

I'm having json string like,

{"OperationResult":0,"Messages":"","UpdateAvailable":"","ResultData":{"SessionId":"3b44a524-fc2a-499b-a16e-6d96339a6b5b","UserName":"admin","AccoundId":null,"Roles":["Administrator"],"DisplayName":"Admin","Status":3,"Type":1}}

I want to assign this json string to above class.I'm using GSON for assign json string to java object.In normal class i can assign json string to java object. But for this class i couldn't assign directly. Please any one help me, Now i'm assigning like,

String formatedjsonstring = {json string};
            Log.i("FORMAT STRING:",formatedjsonstring);
            Gson gson = new Gson();
            ReturnData returndata = (ReturnData) gson.fromJson(
                    formatedjsonstring, ReturnData.class);

回答1:


Since your Java class doesn't resemble your JSON in any way, shape or form ... you're going to have a problem with that.

  • Problem #1: OperationResult should be an int
  • Problem #2: You're declared ResultData as an Object ... Java doesn't work like that.

You need your POJO to match the JSON:

public class ReturnData {
    public ReturnData() {
        OperationResult = Result.Failed;
        Messages = "An Error Occured";
        UpdateAvailable = "0";
        ResultData = "";
    }

    public int OperationResult;
    public String Messages;
    public String UpdateAvailable;
    public MyResultData ResultData;
}

class MyResultData {
    public String SessionId;
    public String UserName;
    public String AccountId;
    public List<String> Roles;
    public String DisplayName;
    public int Status;
    public int Type;
}

ReturnData rd = new Gson().fromJson(jsonString, ReturnData.class);

I'd also consider using Gson's @SerializedName("name") annotation to convert the PascalCase field names in your JSON to camelCase field names in Java.

@SerializedName("OperationResult") public int operationResult;



回答2:


You could use JavaJson from sourceforge. You could pass your json string to JsonObject .parse().

Try this

 JsonObject json = JsonObject .parse("{\"OperationResult\":0, \"Messages\":\"UpdateAvailable\"");
 System.out.println("OperationResult=" + json.get("OperationResult"));
 System.out.println("Messages=" + json.get("Messages"));

https://sourceforge.net/projects/javajson/




回答3:


Try this:

java.lang.reflect.Type  type = new TypeToken<ReturnData>(){}.getType();
ReturnData rd = new Gson().fromJson(jsonString, type);


来源:https://stackoverflow.com/questions/15246030/json-string-to-java-object

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!