簡體   English   中英

gson解析中具有不同類型的同名字段

[英]Same named fields with different types in gson parsing

我有一個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()
    {
    }
}

我有一個API調用,可以拉出一個“ RequestModel”項。 但是,該api調用中的消息列表將“請求”作為字符串而不是“ RequestModel”對象。

有什么方法可以使它解析為其他名稱,或者完全忽略它以繞過由於類型不同而引起的異常。

在聲明成員的@SerializedName("")之前,請使用注釋@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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM