2015-07-03 5 views
0

Как десериализовать нижний ответ json с классом java pojo.Невозможно десериализовать ответ 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

пытаются изменить, как String [ ] tzs как List > – Raghavendra

+1

Вам не нужен класс TimeZone, чтобы соответствовать той части JSON? –

+1

'tzs' в вашем ответе JSON не является строковым массивом (как в вашем классе' Response'), а массивом строковых массивов. –

ответ

2

Вам нужен класс, чтобы соответствовать массивы часовых поясов

public class TimeZoneClass { 
    private Object[] tz_values ; 
} 

И в

изменения этого

private String[] tzs; 

к этому

private TimeZoneClass[] tzs; 
+0

Я пробовал выше, но все-таки исключение. – Karthik

+1

Я думаю, вы должны использовать 'Object []' вместо 2 разных полей в TimeZoneClass ... Потому что только 'JSONObjects' будет анализироваться в разные поля ... Но здесь это' JSONArray', который содержит идентификатор и имя , – Codebender

+0

@Codebender не стесняйтесь редактировать мой ответ или публиковать свои собственные, так как вы заслуживаете кредит ;-) –

Смежные вопросы