BG Development


  Reply to this topicStart new topicStart Poll

> Пеоблем с JSON десериализация
Pascal
Публикувано на: 14-07-2017, 20:35
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 684
Регистриран на: 22.11.06



Пиша един web service който трабва да получава JSON данни.
{
"submissionType": 4,
"comments": "This is a sample request",
"data": [
{
"commonName": "OCIENEGA",
"number": 1908
},
{
"commonName": "DEL ROSA F2",
"number": 3525
}
]
}

В крайна сметка всичко, което е достъпно директно submissionType и comments е присвоено правилно, но всички обекти, които се създават в масива data имат commonName == null и number == null. Пробвах с масив (array) пробвах със списък (List) - и в двата случая се създава съотвтната структура с два обекта но присвоените стойности си остават null. Опитах да анотирам с JsonProperty - същата работа. Определено разпознава имената на полетата, защото ако използвам поле, което не е в класа, се хвърля exception.

Идеи някакви?
PMEmail Poster
Top
Bender
Публикувано на: 14-07-2017, 21:21
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4383
Регистриран на: 19.06.14



Вариант 1:

CODE
public final class JsonDesrializationDemo {
   public static void main(String[] args) throws IOException {
       final ObjectMapper objectMapper = new ObjectMapper();
       objectMapper.setVisibility(objectMapper.getSerializationConfig()
         .getDefaultVisibilityChecker()
         .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
         .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
         .withSetterVisibility(JsonAutoDetect.Visibility.NONE)
         .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
       );

       String data = "{\n" +
         "\"submissionType\": 4,\n" +
         "\"comments\": \"This is a sample request\",\n" +
         "\"data\": [\n" +
         "{\n" +
         "\"commonName\": \"OCIENEGA\",\n" +
         "\"number\": 1908\n" +
         "},\n" +
         "{\n" +
         "\"commonName\": \"DEL ROSA F2\",\n" +
         "\"number\": 3525\n" +
         "}\n" +
         "]\n" +
         "}";

       final JavaRulz javaRulz = objectMapper.readValue(data, JavaRulz.class);
       System.out.println(javaRulz);
   }
}

class RulzJava {
   String commonName;
   int number;

   @Override
   public String toString() {
       return "RulzJava{" +
         "commonName='" + commonName + '\'' +
         ", number=" + number +
         '}';
   }
}

class JavaRulz {
   String comments;
   int submissionType;
   List<RulzJava> data;

   @Override
   public String toString() {
       return "JavaRulz{" +
         "comments='" + comments + '\'' +
         ", sumbissionType=" + submissionType +
         ", data=" + data +
         '}';
   }
}


Вариант 2:
CODE

public final class JsonDesrializationDemo {
   public static void main(String[] args) throws IOException {
       final ObjectMapper objectMapper = new ObjectMapper();
       objectMapper.setVisibility(objectMapper.getSerializationConfig()
         .getDefaultVisibilityChecker()
         .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
         .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
         .withSetterVisibility(JsonAutoDetect.Visibility.NONE)
         .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
       );

       String data = "{\n" +
         "\"submissionType\": 4,\n" +
         "\"comments\": \"This is a sample request\",\n" +
         "\"data\": [\n" +
         "{\n" +
         "\"commonName\": \"OCIENEGA\",\n" +
         "\"number\": 1908\n" +
         "},\n" +
         "{\n" +
         "\"commonName\": \"DEL ROSA F2\",\n" +
         "\"number\": 3525\n" +
         "}\n" +
         "]\n" +
         "}";

       final Map map = objectMapper.readValue(data, Map.class);
       System.out.println(map);
   }
}


--------------------
Живота е спагети, кода за да работи добре трябва да го наподобява - Дон Реба
...
Живеем в греховни времена, какво очакваш богоугоден и благочестив код ли? - Дон Реба
...
много положителна енергия черпя от вас двамата,единият комунистически девствен,другият яко яхнал асемблерните розови понита - saruman
...
Рано или късно усерите на Виндофс разбират че стоят от неправилната страна на хуя. - ici
PM
Top
Pascal
Публикувано на: 14-07-2017, 21:45
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 684
Регистриран на: 22.11.06



QUOTE (Bender @ 14-07-2017, 21:21)
Вариант 1:
...
Вариант 2:
...

Благодаря... Забравих да спомена, че се опитвам да направя тази глупост с интегрираната версия на JAXRS в JBoss (по-точно Wildfly8.1). Ако не намеря проблема, вероятно ще прибегна към нещо подобно на това, което си написал.
PMEmail Poster
Top
Bender
Публикувано на: 14-07-2017, 22:29
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4383
Регистриран на: 19.06.14



сигурно имаш някакъв лайнян сеттер за въпросните пропъртита който наебва нещата


--------------------
Живота е спагети, кода за да работи добре трябва да го наподобява - Дон Реба
...
Живеем в греховни времена, какво очакваш богоугоден и благочестив код ли? - Дон Реба
...
много положителна енергия черпя от вас двамата,единият комунистически девствен,другият яко яхнал асемблерните розови понита - saruman
...
Рано или късно усерите на Виндофс разбират че стоят от неправилната страна на хуя. - ici
PM
Top
thrawn
Публикувано на: 14-07-2017, 22:29
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 756
Регистриран на: 17.01.17



Защо не ползваш jaxb а се занимаваш с глупости?

Тъпо, но дори и в 9-ката проблемът със стандартния json парсер не е решен. Лично аз предпочитам магията на jaxb.
PMEmail Poster
Top
Pascal
Публикувано на: 14-07-2017, 22:40
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 684
Регистриран на: 22.11.06



QUOTE (thrawn @ 14-07-2017, 22:29)
Защо не ползваш jaxb а се занимаваш с глупости?

Тъпо, но дори и в 9-ката проблемът със стандартния json парсер не е решен. Лично аз предпочитам магията на jaxb.

Защото не знаех, че има проблем с JSON парсера.
PMEmail Poster
Top
Pascal
Публикувано на: 14-07-2017, 22:43
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 684
Регистриран на: 22.11.06



QUOTE (Bender @ 14-07-2017, 22:29)
сигурно имаш някакъв лайнян сеттер за въпросните пропъртита който наебва нещата

Стандартни сетери - нищо различно от тези в главния клас
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0