2016-01-29 7 views
0

В настоящее время я форма, как показано ниже:Джексон: Сериализация запятой строки в массив JSON

public class Form { 

    private String listOfItems; 

    public String getListOfItems() { 
     return listOfItems; 
    } 

    public void setListOfItems(String listOfItems) { 
     this.listOfItems= listOfItems; 
    } 

} 

Для instanse LISTOFITEMS равен следующая строки "1,2,3".

Цель состоит в том, чтобы сериализовать эту форму, чтобы следующий формат:

{ 
    "listOfItems": [1, 2, 3] 
} 

Было бы хорошо, чтобы знать, как правильно делать такие вещи? Как я знаю, можно создать какой-то пользовательский сериализатор, а затем пометить с ним соответствующий метод getter, например @JsonSerialize(using = SomeCustomSerializer).

Но не уверен, что это правильный подход, вероятно, любые реализации по умолчанию уже существуют.

+1

Проверить это: http://stackoverflow.com/questions/5245840/how-to-convert-string-to-jsonobject-in-java – kunpapa

ответ

0

Если вы можете редактировать свой Form класс:

public class Form { 

    private String listOfItems; 

    public String getListOfItems() { 
     return listOfItems; 
    } 

    public void setListOfItems(String listOfItems) { 
     this.listOfItems = listOfItems; 
    } 

    @JsonProperty("listOfItems") 
    public List<Integer> getArrayListOfItems() { 
     if (listOfItems != null) { 
      List<Integer> items = new ArrayList(); 
      for (String s : listOfItems.split(",")) { 
       items.add(Integer.parseInt(s)); // May throw NumberFormatException 
      } 
      return items; 
     } 
     return null; 
    } 
} 

По умолчанию Джексон ищет добытчик для сериализации. Вы можете переопределить это, используя аннотацию @JsonProperty.

ObjectMapper mapper = new ObjectMapper(); 
    Form form = new Form(); 
    form.setListOfItems("1,2,3"); 

    System.out.print(mapper.writeValueAsString(form)); 

Выходы:

{"listOfItems":[1,2,3]} 
Смежные вопросы