2014-10-17 4 views
3

Да, я знаю, что этот вопрос обсуждался несколько раз, но мне не удалось решить мою проблему.Не удалось прочитать JSON: Нераспознанное поле (...), не отмечено как невежественное

Так я получаю JSONObject из HTTP-запроса с использованием org.springframework.web.client.RestTemplate:

JSONObject j = RestTemplate.getForObject(url, JSONObject.class); 

Но я получаю эту ошибку:

Exception in thread "main" org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unrecognized field "uri" (Class org.json.JSONObject), not marked as ignorable 
at [Source: [email protected]6c5f; line: 2, column: 12] (through reference chain: org.json.JSONObject["uri"]); nested exception is org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "uri" (Class org.json.JSONObject), not marked as ignorable 
at [Source: [email protected]6c5f; line: 2, column: 12] (through reference chain: org.json.JSONObject["uri"]) 
    at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.readJavaType(MappingJacksonHttpMessageConverter.java:181) 
    at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.read(MappingJacksonHttpMessageConverter.java:173) 
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:94) 
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:517) 
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:472) 
    at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:237) 

I хотите получить доступ к Rest-Api, а объекты Json могут иметь разные имена полей. Я уже пробовал @JsonIgnoreProperties(ignoreUnknown=true). Но это не сработает ...

Как получить ответ в JSONObject?

ответ

3

Вы можете использовать это с Джексоном 2.0:

ObjectMapper objectMapper = new ObjectMapper(); 
objectMapper.configure(
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 

Если ваша версия до 2.0 использования:

ObjectMapper objectMapper = new ObjectMapper(); 
objectMapper.configure(
DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
+0

Я читал об этом, но как именно я использую метод readValue()? – Maik

+0

Хорошо, я понял, но теперь я получаю «Исключение в потоке» main «org.codehaus.jackson.JsonParseException: Неожиданный символ (« h »(код 104)): ожидается допустимое значение (число, строка, array, object, 'true', 'false' или 'null') ' – Maik

+0

Извините за так много ответов. Я работаю над этим и запускаю его. Спасибо, сейчас! – Maik

0

org.codehaus.jackson.JsonParseException: Неожиданный символ ('ч' (код 104)): ожидаемое допустимое значение (число, строка, массив, объект, «истина», «ложь» или «нуль»)

** Примечание: ** Вы получаете ошибку, потому что вы не отправляете данные в правом JSON формат.

Смежные вопросы