Jaki jest najlepszy sposób przekonwertowania kodu JSON, ponieważ:
{
"data" :
{
"field1" : "value1",
"field2" : "value2"
}
}
na Mapie Java, w której kluczem są (pole1, pole2), a wartości dla tych pól to (wartość1, wartość2).
Jakieś pomysły? Czy powinienem do tego użyć Json-lib? A może lepiej, jeśli napiszę własny parser?
java
json
parsing
collections
David Santamaria
źródło
źródło
Odpowiedzi:
Mam nadzieję, że żartowałeś z pisania własnego parsera. :-)
W przypadku tak prostego mapowania działałoby większość narzędzi z http://json.org (sekcja java). W przypadku jednego z nich (Jackson https://github.com/FasterXML/jackson-databind/#5-minute-tutorial-streaming-parser-generator ):
(gdzie JSON_SOURCE to plik, strumień wejściowy, czytnik lub ciąg znaków json)
źródło
Map<String,Object> result = mapper.readValue(source, Map.class)
.Korzystanie z biblioteki GSON:
Użyj następującego kodu:
źródło
TypeToken<Map<String, Map>>
:-)Lubię bibliotekę Google Gson .
Gdy nie znasz struktury Jsona. Możesz użyć
i wtedy możesz pracować z jsonem. np. jak zdobyć „wartość1” z gson:
źródło
Użyj JSON lib np. Http://www.json.org/java/
źródło
Mój post może być pomocny dla innych, więc wyobraź sobie, że masz mapę z określonym obiektem w wartościach, coś takiego:
Aby przeanalizować ten plik JSON z biblioteką GSON, jest to łatwe: jeśli twój projekt jest zaimplementowany
Następnie użyj tego fragmentu:
Odpowiedni POJO powinien być mniej więcej taki:
Mam nadzieję, że to pomoże !
źródło
W ten sposób działa jak mapa ...
źródło
JsonMap implements Map<String,Object
aby owinąć JSONObject. wtedy otrzymujesz prawdziwyMap
interfejs.Robię to w ten sposób. To proste.
źródło
źródło
Biblioteka JsonTools jest bardzo kompletna. Można go znaleźć na Github .
źródło
Z Google Gson 2.7 (prawdopodobnie też wcześniejszymi wersjami, ale testowałem 2.7) jest tak prosty, jak:
Która zwraca mapę typu
class com.google.gson.internal.LinkedTreeMap
i działa rekurencyjnie na zagnieżdżone obiekty.źródło
Jeszcze jedną alternatywą jest json-simple, który można znaleźć w Maven Central :
Artefakt ma wielkość 24 kB i nie ma innych zależności czasu wykonywania.
źródło
null
się od prostego JSON ciąg gdzie jedna z wartości jest tablicą ciągów.Jeśli używasz org.json, JSONObject ma metodę
toMap()
. Możesz łatwo zrobić:źródło
źródło
Podkreślenie javaBiblioteka może konwertować ciąg jsonowy na mapę mieszania. Jestem opiekunem projektu.
Przykład kodu:
źródło
Jeśli potrzebujesz czystej Java bez żadnych zależności, możesz użyć kompilacji w Nashorn API od Java 8. Jest przestarzała w Javie 11.
To działa dla mnie:
Przykładowe użycie
JSON:
Kod:
źródło
Wypróbuj ten kod:
źródło
JSON na mapę zawsze będzie typem ciągu / obiektu. Mam bibliotekę GSON z Google.
działa bardzo dobrze, a minimalne wymagania to JDK 1.5.
źródło