2015-07-03 124 views
0

如何使用java pojo类反序列化下面的json响应。无法反序列化JSON响应

JSON响应

"details": 
    { 
    "distance": 14745, 
    "km": 14.745, 
    "steps": 16804, 
    "active_time": 11927, 
    "longest_active": 2516, 
    "inactive_time": 32760, 
    "longest_idle": 27180, 
    "calories": 1760.30480012, 
    "bmr_day": 1697.47946931, 
    "bmr": 1697.47946931, 
    "bg_calories": 1099.9439497, 
    "wo_calories": 388.506116077, 
    "wo_time": 11484, 
    "wo_active_time": 3902, 
    "wo_count": 2, 
    "wo_longest": 2516, 
    "tz": "America/Los Angeles", 
    "tzs": 
    [ 
     [1384963500, "America/Phoenix"], 
     [1385055720, "America/Los_Angeles"] 
    ] 
} 

我已经写了下面的POJO渔获反序列化JSON响应。

Response.java

public class Response { 

private Distance distance; 
} 

Distance.java 
public class Distance{ private int distance; 
    private double km; 
    private int steps; 
    private int active_time; 
    private int longest_active; 
    private int inactive_time; 
    private int longest_idle; 
    private int calories; 
    private int bmr_day; 
    private int bmr; 
    private int bg_calories; 
    private int wo_calories; 
    private int wo_time; 
    private int wo_active_time; 
    private int wo_count; 
    private int wo_longest; 
    private int sunrise; 
    private int sunset; 
    private String tz; 
    private String[] tzs; 
    private String hourly_totals; 
    } 

我得到了下面的异常,

Can not deserialize instance of java.lang.String out of START_ARRAY token 
atSource: [email protected];(through reference chain: Details["tzs"]); 
nested exception is com.fasterxml.jackson.databind.JsonMappingException: 
Can not deserialize instance of java.lang.String out of START_ARRAY token 

如何克服这一点。

+0

尝试改变为字符串[ ] tzs as List > – Raghavendra

+1

你不需要类TimeZone来匹配那部分JSON吗? –

+1

您的JSON响应中的'tzs'不是字符串数组(而不是您的'Response'类),而是一个字符串数组数组。 –

回答

2

你需要一个类来匹配时区

public class TimeZoneClass { 
    private Object[] tz_values ; 
} 

而且在

变化的阵列此

private String[] tzs; 

这个

private TimeZoneClass[] tzs; 
+0

我试过上面但仍然是例外。 – Karthik

+1

我想你应该在TimeZoneClass中使用Object []而不是2个不同的字段...因为只有'JSONObjects'会被解析成不同的字段......但是这里是一个'JSONArray',它包含了ID和名字。 – Codebender

+0

@Codebender随时编辑我的答案或张贴自己的,因为你应得的信用;-) –