Прежде всего, вы имеете в виду JSONObject, который является стандартным от Java EE 7 и не JSONObject, что в Android.
Даже в той ссылке, которую вы предоставляете, они говорят об этом.
чем, вот мой пример автомобиля:
пакет org.mas.examples.jackson.models;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import javax.json.JsonObject;
public class Car {
@JsonProperty(value="id")
private long id;
@JsonProperty(value="name")
private String name;
@JsonIgnore
private JsonObject settings;
public void setId(long id) {
this.id = id;
}
public long getId() {
return this.id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setSettings(JsonObject settings) {
this.settings = settings;
}
public JsonObject getSettings() {
return settings;
}
@JsonAnySetter
public void setJsonProperty(String key, Object value) {
if ("settings".equals(key)) {
System.out.println("Got it " + key + " value: " + value);
/* JsonObject settings = ....; create here your JsonObject */
} else {
System.out.println(key + " value: " + value);
}
}
}
Если запустить тест так:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
try {
Car car = objectMapper.readValue(json, Car.class);
System.out.println("Load a car: " + car.getName());
} catch (IOException e) {
e.printStackTrace();
}
Вы собираетесь получить следующий результат:
Got it settings value: {color=#ff0000}
Load a car: test
Так что работать только на настройках, как описано в Jackson Аннотация doc:
@JsonAnySetter: аннотацию используется для определения метода с двумя аргументами, как «любой сеттер», используемый для десериализации значений иначе неотображенного JSON Свойства
Попробуйте использовать аннотации '@ JsonAnySetter' и' @ JsonAnyGetter' [здесь] (http://www.programcreek.com/java-api-examples/index.php?api=com.fasterxml.jackson.annotation.JsonAnySetter) пример того, как его использовать. –
@MarioAlexandroSantini Я попробовал ** Example1 ** из предоставленной вами ссылки. Но он также устанавливает остальную часть поля, которая не находится в POJO 'Car'. Мне просто нужен объект, который находится под ключ 'setting' (который является' JSONObject') –