我的android应用程序使用flexjson库来反序列化通过RESTfull webservice从服务器接收的json数据字符串。但是当反序列化时我会得到错误。
flexjson.JSONException:[data.status]:不知道如何将Clock_in绑定到类wfa.com.tma.wfa.type.TimeClockStatus中。您可能需要使用ObjectFactory而不是普通类。
这是我的字符串
{
"data":
{
"todayShift":
{
"startTime":"1970-01-01T13:30:00Z",
"endTime":"1970-01-02T00:00:00Z",
"office":
{
"id":1,"name":"Location Test 1"
}
},
"currentTime":"2017-10-12T07:47:11Z",
"status":"Clock_in",
"latestTime":"2017-10-12T07:46:13Z",
"latestOffice":{"id":1,"name":"Location Test 1"}},
"meta":{"type":"TimeClockDto"}
}
此字符串的DTO
public class TimeClockDto implements Serializable
{
private static final long serialVersionUID = 1L;
private TodayShiftDto todayShift;
private String currentTime;
private TimeClockStatus status;
private String latestTime;
private BaseLocationDto latestOffice;
public TimeClockDto(TodayShiftDto todayShift, String currentTime,
TimeClockStatus status, String latestClockInTime,
BaseLocationDto latestOffice)
{
this.todayShift = todayShift;
this.currentTime = currentTime;
this.status = status;
this.latestTime = latestClockInTime;
this.latestOffice = latestOffice;
}
//getter, setter
}
`和反序列化代码
和枚举类
public enum TimeClockStatus
{
Clock_in, Clock_out;
}
答案 0 :(得分:0)
我使用EnumObjectFactory
TimeClockDto result = new JSONDeserializer<TimeClockDto>
.use("data", TimeClockDto.class)
.use("data.todayShift", TodayShiftDto.class)
.use("data.status", new EnumObjectFactory())
.use("data.latestOffice", BaseLocationDto.class)
.deserialize(param.getResult(),TimeClockDto.class);