Я использую Jackson 1.9.5 в проекте Android для анализа файлов JSON.
Пока у меня не было никаких проблем, и я могу нормально разбирать файлы, используя следующий код:
AssetManager mgr = getAssets();
ObjectMapper mapper = new ObjectMapper();
try {
InputStream ifp = mgr.open("detail_schema.json");
schema = mapper.readValue(ifp, DetailSchema.class);
} catch (IOException e) {
e.printStackTrace();
}
Где класс DetailSchema состоит из смеси примитивных типов и классов. Теперь у меня возникла проблема, когда я хочу проанализировать некоторый JSON, как показано ниже:
"fields": {
"Suburb": "Paddington",
"State": "NSW",
"Post Code": "2074",
"Lollipop": "Foo Bar Haz"
}
Где я не могу заранее знать ключи карты (они могут быть определены пользователем). Таким образом, я не уверен, как должен выглядеть связанный класс Java.
Т.е. для этого примера это могло бы выглядеть так:
public class MyClass {
public String Suburb;
public String State;
public String PostCode;
public String Lollipop;
}
Но это может быть неверно для другого экземпляра файла JSON. В идеале мне нужен способ для Джексона сопоставить значения с чем-то вроде NameValuePair. Я подозреваю, что автоматическое сопоставление объектов может не подходить в этом случае - может кто-нибудь подтвердить или опровергнуть это?