我正在上课
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);
答案 0 :(得分: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"));
答案 1 :(得分:0)
由于您的Java类不以任何方式,形状或形式与您的JSON相似......您将遇到问题。
OperationResult
应该是int
ResultData
为Object
... 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;
答案 2 :(得分:-1)
试试这个:
java.lang.reflect.Type type = new TypeToken<ReturnData>(){}.getType();
ReturnData rd = new Gson().fromJson(jsonString, type);