Json字符串到java对象 [英] Json string to java object

查看:102
本文介绍了Json字符串到java对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  public class ReturnData {
public ReturnData(){
OperationResult = Result.Failed;
Messages =发生错误;
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, 用户名: 管理, AccoundId:空, 角色: 管理员], 显示名称: 管理, 状态:3, 类型: 1}} 

我想将这个json字符串分配给上面的类。我使用GSON进行赋值json字符串到java对象。在普通的类我可以分配json字符串到java对象。但是对于这个班级我不能直接分配。请任何人帮助我,
现在我分配像,

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


解决方案

由于您的Java类不像您的JSON任何方式,形状或形式...你会有一个问题。




  • 问题#1: OperationResult 应该是 int

  • 问题#2:将 ResultData 声明为 Object ... Java无法正常工作。



您需要POJO来匹配JSON:

  public class ReturnData {
public ReturnData(){
OperationResult = Result.Failed;
Messages =发生错误;
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>角色;
public String DisplayName;
public int Status;
public int类型;
}

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

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

  @SerializedName(OperationResult)public int operationResult; 


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

解决方案

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;

这篇关于Json字符串到java对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆