【问题标题】:Same named fields with different types in gson parsinggson解析中具有不同类型的同名字段
【发布时间】:2017-01-30 11:57:44
【问题描述】:

我有一个 RequestModel 定义为

public class RequestModel
{
    public class Footage
    {
        public String date;
        public String retrievedAt;
        public String videoFileName;
        public String availableUntil;
        public boolean isAvailable;
    }

    public class People
    {
        public String first;
        public String last;
    }

    public static final int USER_BLOCKED  = 0;
    public static final int USER_ACTIVE   = 1;
    public static final int USER_WAIT_PIN = 2;

    public String _id;

    public String status;
    public String submittedAt;

    public Footage footage;
    public People teacher;
    public People student;

    public ArrayList<MessageModel> messages = new ArrayList<MessageModel>();
    public boolean isExpanded = false;

    public RequestModel()
    {
    }

我的 MessageModel 定义为

public class MessageModel
{
    public String _id;

    public String statusMessage;
    public String submittedAt;

    public RequestModel request;
    public String status;
    public String timestamp;

    public boolean isExpanded = false;

    public MessageModel()
    {
    }
}

我有一个提取单个“RequestModel”项目的 api 调用。但是,该 api 调用中的消息列表将“请求”作为字符串而不是“请求模型”对象。

有什么办法可以让它解析为不同的名称或完全省略它以绕过由于不同类型而导致的异常。

【问题讨论】:

    标签: java android android-studio gson


    【解决方案1】:

    在声明成员之前使用注解@SerializedName("")给它一个替代名称 例如,

    如果你的 json 看起来像这样

    {
    name:"",
    age:0,
    items:[...]
    }
    

    但是你的模型类有字段,

    class User{
        String name;
        int age;
        Data userItems[];
    }
    

    模型中的字段userItems在json中命名为items, 您需要在该字段上使用该注释:

    class User{
        String name;
        int age;
    
        @SerializedName("items")
        Data userItems[];
    }
    

    这样 GSON 会将 items 映射到 userItems

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多