Я использую 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 . Я подозреваю, что в этом случае автоматическое сопоставление объектов не может быть вариантом -, может ли кто-нибудь подтвердить или опровергнуть это?