Używam Jackson 1.9.5 w projekcie Android do parsowania plików JSON.Jackson ObjectMapper z arbitralnymi kluczami JSON
Do tej pory nie miałem żadnych problemów, a może analizować pliki grzywny za pomocą następującego kodu:
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();
}
gdzie klasa DetailSchema składa się z mieszanki prymitywnych typów i klas. Jestem teraz uruchomiony na problem gdzie chcę analizować niektóre JSON jak poniżej:
"fields": {
"Suburb": "Paddington",
"State": "NSW",
"Post Code": "2074",
"Lollipop": "Foo Bar Haz"
}
gdzie nie może wiedzieć klawiszy mapy przed dłoni (mogą być definiowane przez użytkownika). W związku z tym nie jestem pewien, jak powinna wyglądać powiązana klasa Java.
Ie, na ten przykład, może to wyglądać tak:
public class MyClass {
public String Suburb;
public String State;
public String PostCode;
public String Lollipop;
}
Ale może to nie być odpowiednie dla innej instancji pliku JSON. Idealnie potrzebuję jakiegoś sposobu, aby Jackson wyznaczył wartości na coś w rodzaju NameValuePair. Podejrzewam, że automatyczne mapowanie obiektów może nie być w tym przypadku możliwe - czy ktoś może to potwierdzić lub zaprzeczyć?
Wielkie dzięki! Mapa będzie działać dobrze dla moich celów. – aaronsnoswell
Nie musisz używać niestandardowej klasy, aby uzyskać 'Mapę', możesz mieć deserializację Jackson bezpośrednio do implementacji interfejsu' Map', np .: 'Map jsonFields = mapper.readValue (ifp, HashMap .class) ' – brianmearns