在gson解析中具有不同类型的相同命名字段

时间:2016-09-22 03:59:36

标签: java android android-studio gson

我将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调用中的消息列表将“request”作为String而不是“RequestModel”对象。

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

1 个答案:

答案 0 :(得分:0)

在声明成员为其指定替代名称之前,请使用注释it('should call Service.createUser and set a message', function(){ scope.submitNewForm(); scope.$$postDigest(function(){ scope.$digest(); expect(scope.message).toBeDefined(); }); }); 前,

如果你的json看起来像这样

@SerializedName("")

但你的模型类有字段

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

模型中的字段class User{ String name; int age; Data userItems[]; } 在json中命名为userItems, 你需要在字段上使用该注释:

items

这样GSON会将class User{ String name; int age; @SerializedName("items") Data userItems[]; } 映射到items