0

我正在上课

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;
}

我有类似的json字符串,

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

我想将此json字符串分配给上面的类。我正在使用GSON将json字符串分配给java对象。在普通类中,我可以将json字符串分配给java对象。但是对于这个类,我不能直接分配。请任何人帮助我,现在我正在分配,

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

3 回答 3

1

您可以使用 sourceforge 中的 JavaJson。您可以将 json 字符串传递给JsonObject .parse().

尝试这个

 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/

于 2013-03-06T11:32:17.270 回答
0

由于您的 Java 类在任何方面、形状或形式上都与您的 JSON 不同……因此您将遇到问题。

  • 问题#1:OperationResult应该是一个int
  • 问题#2:你被声明ResultDataObject... Java 不能那样工作。

你需要你的 POJO 来匹配 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);

我还考虑使用 Gson 的@SerializedName("name")注释将 JSON 中的 PascalCase 字段名称转换为 Java 中的 camelCase 字段名称。

@SerializedName("OperationResult") public int operationResult;
于 2013-03-06T14:54:39.137 回答
-1

尝试这个:

java.lang.reflect.Type  type = new TypeToken<ReturnData>(){}.getType();
ReturnData rd = new Gson().fromJson(jsonString, type);
于 2013-03-06T12:27:05.680 回答