Próbowałem stworzyć dynamikęsystem przechwytywania tekstu, aby łatwiej tłumaczyć przyszłe programy na różne języki. Jestem dość nowy w Javie, więc nie jestem dobrze zaznajomiony z typami danych, ale czy można wziąć obiekt JSON (używając simple.json) i przekonwertować go na coś, do czego mógłbym łatwo odwoływać się i treściwie?
Na przykład podany ciąg JSON:
{
"name": "John Doe",
"country": "US",
"age": 25,
"family": {
"immediate": {
"spouse": "Johnette Doe",
"children": [
{
"name": "Jimbles Doe",
"age": "213"
}
]
}
}
}
Jak mogę skonfigurować mój plik, aby móc do niego odwoływać w następujący sposób:
JohnClass.family.immediate.children[0].name
i uzyskać wartość w zamian?
Odpowiedzi:
1 dla odpowiedzi № 1Zdobądź Jackson (użyj zależności od maven lub pobierz słoik): http://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.5.0
Nieprzetestowany kod poniżej, a szczerze mówiąc, bezproblemowy punt, tylko po to, aby pomóc Ci szybko go posortować.
Utwórz JSONMapper (najlepiej w konstruktorze):
ObjectMapper mapper = new ObjectMapper();
Konwertuj na Hashmap (możesz również przekonwertować na dowolny inny obiekt):
Map map = mapper.readValue("JSON_STRING_HERE", new TypeReference<HashMap>(){});
Dostęp w ten sposób:
map.get("family").get("immediate").get("children").get(0).get("name");
Możesz także użyć JSONObject, który również implementuje interfejs Map, ale jeśli przyzwyczaisz się robić to w ten sposób, będziesz wiedział, jak to zrobić dla innych obiektów.