2015-02-19 5 views
1

я получаю JSON из веб-службы, ответ JSON я получаю:Синтаксический JSON объект без идентификатора с Джексоном

{ 
    "response":"itemList", 
    "items":[ 
     "0300300000", 
     "0522400317", 
     "1224200035", 
     "1224200037", 
     "1547409999" 
    ] 
} 

Я ищу, чтобы получить каждый идентификатор в массиве элементов. Проблема в том, что я не уверен, как разбирать это с Джексоном, когда нет идентификаторов для id в массиве items. Я понимаю, что у меня может быть класс item с переменным id и @JsonProperty («id»), но я не знаю, как это сделать. Мне нужно, чтобы отобразить эти идентификаторы в списке (который я не могу делать никаких проблем, как только у меня есть данные.

Может кто-то пожалуйста мне точку в правильном направлении.

Спасибо.

+2

лучший инструмент для этого: http://www.jsonschema2pojo.org/ – harcos

+0

@harcos хороший инструмент, закладкой :-) – CupawnTae

ответ

1

Вы можете десериализацию в нечто вроде

public class MyData { 
    public String response; 
    public List<String> items; 
} 

(это также будет работать, если у вас есть частные поля с общественными set методами). Или, если вы не против, джексон специфические аннотации в ваших классах данных, вы можете оставить их в качестве не- публичный и аннотированный им:

public class MyData { 
    @JsonProperty 
    String response; 

    @JsonProperty 
    List<String> items; 
} 

так или иначе, использовать это, чтобы разобрать:

import com.fasterxml.jackson.databind.ObjectMapper; 
//... 

MyData data=new ObjectMapper().readValue(jsonStringFromWebService, MyData.class); 
+0

спасибо за ответ. Извините, я не так разбираюсь в десериализации или разборе JSON, не могли бы вы продумать, пожалуйста? –

+0

добавил анализирующий код – CupawnTae

+0

отредактированный ответ выглядит немного похожим на мой, хотя исходный ответ был далек от него;) – harcos

0

Я так думаю, вы хотите:

ArrayList<String> notifArray=new ArrayList<String>(); 
    JSONObject jsonObj= new JSONObject (resultLine); 
    JSONArray jArray = jsonObj.getJSONArray("items"); 
    for (int i = 0; i < jArray.length(); i++) {      
     String str = jArray.getString(i); 
     notifArray.add(str); 
    } 
0

Вы можете преобразовать JSON строки в объект JSON, и идентифицировать массив и получить идентификаторы.

String josn = "{\"response\":\"itemList\", \"items\":[\"0300300000\",\"0522400317\",\"1224200035\",\"1224200037\",\"1547409999\"]}"; 
JSONObject jsonObject = new org.json.JSONObject(josn); 
JSONArray itemsArray = jsonObject.getJSONArray("items"); 
System.out.println("Item - 1 =" + itemsArray.getString(0)); 
0
class Something { 
    public String response; 

    @JsonCreator 
    public Something(@JsonProperty("response") String response) { 
     this.response=response; 
    } 

    public List<String> items= new ArrayList<String>(); 

    public List<String> addItem(String item) { 
     items.add(item); 
     return items; 
    } 
} 

, а затем:

public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException { 
    String json = "{\"response\":\"itemList\",\"items\":[\"0300300000\",\"0522400317\"]}"; 
    ObjectMapper mapper = new ObjectMapper(); 
    mapper.readValue(json, Something.class); 
} 
Смежные вопросы