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