Аннотации, чтобы заставить Джексон интерпретировать поле либо как массив JSON, либо объект JSON [дубликат]

Поддержка Unicode в PHP по-прежнему огромна. Хотя он способен преобразовывать строку ISO8859 (которая используется внутри нее) в utf8, ей не хватает возможности работать с строками unicode изначально, что означает, что все функции обработки строк будут искажать и повреждать ваши строки. Таким образом, вам нужно либо использовать отдельную библиотеку для правильной поддержки utf8, либо самостоятельно переписать все функции обработки строк.

. Легкая часть - это просто указать кодировку в заголовках HTTP и в базе данных и т. Д., Но нет что имеет значение, если ваш PHP-код не выводит допустимый UTF8. Это сложная часть, и PHP практически не помогает. (Я думаю, что PHP6 должен исправить худшее из этого, но это все еще вдалеке)

30
задан XiaoChuan Yu 8 June 2013 в 22:03
поделиться

3 ответа

Попробуйте с помощью DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY - он должен работать для вас.

Пример:

final String json = "{\"date\" : \"2013-05-11\",\"value\" : 123}";

final ObjectMapper mapper = new ObjectMapper()
        .enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
final List<Point> points = mapper.readValue(json,
        new TypeReference<List<Point>>() {
        });
System.out.println(points);
54
ответ дан Perception 4 September 2018 в 07:09
поделиться

В версии, совместимой с Jackson 1.x, используется DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY. Таким образом, вышеупомянутый ответ изменяется на:

final String json = "{\"date\" : \"2013-05-11\",\"value\" : 123}";

final ObjectMapper mapper = new ObjectMapper()
    .enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
final List<Point> points = mapper.readValue(json,
    new TypeReference<List<Point>>() {
    });
System.out.println(points);
8
ответ дан phillipuniverse 4 September 2018 в 07:09
поделиться

Можно решить указанную выше проблему с помощью этого кода, приведенного ниже, это работает

 final ObjectMapper objectMapper = new 
 ObjectMapper().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

 objectMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
 try {
      String jsonInString = objectMapper.writeValueAsString(products.get(j));
      InventoryParser inventoryParser = objectMapper.readValue(jsonInString, 
                                       InventoryParser.class);

      System.out.println(inventoryParser.getId());

     } 
     catch (IOException e) 
     {
       e.printStackTrace();
     }

«InventoryParser» - это класс POJO. "products.get (j)" - это строка JSON.

0
ответ дан S Mugunthankumar 4 September 2018 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: