2017-01-05 3 views
1

Кто-нибудь знает, как декодировать строку json до List<Foo> в vert.x?Vert.x Json.decodeValue list

Вы можете легко преобразовать строку в объект с помощью Json.decodeValue(data, Foo.class);, но я не могу понять, как это сделать в случае списков.

До сих пор я получил данные с Json.decodeValue(data, List.class);, но вы ничего не можете сделать с результатом, кроме распечатки.

+0

Мне пришлось использовать API 'Gson.fromJson' для списков. http://stackoverflow.com/questions/18544133/parsing-json-array-into-java-util-list-with-gson/18547661#18547661 –

ответ

1

Вы должны объявить объект-контейнер, но в противном случае, это довольно просто:

// This is your Foo 
public class MyObj { 
    public String key; 

    // Just for clarity 
    @Override 
    public String toString() { 
     return "MyObj{" + 
       "key='" + this.key + '\'' + 
       '}'; 
    } 
} 

// This is the container 
public class MyArray { 
    // Property is mandatory in this case 
    @JsonProperty("objs") 
    List<MyObj> objs; 
} 

А теперь синтаксический

public static void main(final String[] args) { 

    // Your input is a JSON array, not a JSON object 
    final String input = "[{\"key\":\"a\"}, {\"key\":\"b\"}, {\"key\":\"c\"}]"; 

    // We format it to be a JSON object, so we can parse it 
    final MyArray res = Json.decodeValue(String.format("{\"objs\":%s}", input), MyArray.class); 

    // Get your List out 
    System.out.println(res.objs); 
} 
0

Класс Json использует Джексона для декодирования строки.

Я рекомендую использовать Foo [] вместо списка. Если вам действительно нужен Список, вы можете легко создать один «Arrays.asList (arr)».

Или вы можете использовать один из примеров на этом сайте: http://www.baeldung.com/jackson-collection-array