Как использовать Flexjson JSONDeserializer? - PullRequest
1 голос
/ 18 августа 2011

У меня есть строка:

 [{"product_id":"2","name":'stack"'},{"product_id":"2","name":"overflow"}]"

Как я могу использовать JSONDeserializer Flexjson для получения всех product_id s из указанной выше строки?

У меня есть класс с именем productinformation, которыйимеет поля типа product_id и name.

1 Ответ

10 голосов
/ 18 августа 2011

Вы можете использовать методы JSONDeserializer.use(), чтобы сообщить ему, как десериализовать массив и каждый объект в массиве, в данном случае класса ProductInformation.Атрибут product_id не соответствует стандартному именованию, которое ожидает flexjson, поэтому в ваших свойствах объекта должно быть подчеркивание.

String products= "[{\"product_id\": \"123\",\"name\":\"stack\"},{\"product_id\": \"456\",\"name\":\"overflow\"}]";
List<ProductInformation> productInfoList = new JSONDeserializer<List<ProductInformation> >()
    .use(null, ArrayList.class)
    .use("values",ProductInformation.class)
    .deserialize(products);

for(ProductInformation productInformation : productInfoList){
    System.out.println(productInformation.getProduct_id();
}

Раздел «Десериализация без обучающих колес» в В разделе десериализации документов подробно рассматриваются другие случаи, чтобы рассмотреть, не включена ли информация о типе в строку JSON.

...