Czy w Javie / J2ME istnieje sposób na przekonwertowanie łańcucha, na przykład:
{name:"MyNode", width:200, height:100}
do wewnętrznej reprezentacji Object tego samego w jednej linii kodu?
Ponieważ obecna metoda jest zbyt żmudna:
Object n = create("new");
setString(p, "name", "MyNode");
setInteger(p, "width", 200);
setInteger(p, "height", 100);
Może biblioteka JSON?
java
json
java-me
serialization
Błysk
źródło
źródło
{"name":"MyNode", "width":200, "height":100}
Odpowiedzi:
Użyłem kilku z nich, a moim ulubionym jest
http://code.google.com/p/json-simple/
Biblioteka jest bardzo mała, więc jest idealna dla J2ME.
Możesz przeanalizować JSON do obiektu Java w jednej linii, tak jak to:
źródło
Najprostszą opcją jest Jackson :
Istnieją inne, podobnie proste w użyciu biblioteki (wspomniano już o Gson); ale niektóre opcje są bardziej pracochłonne, na przykład oryginalna biblioteka org.json, która wymaga utworzenia pośredniego „JSONObject”, nawet jeśli nie jest to potrzebne.
źródło
Object obj = new ObjectMapper().readValue("[1, 2, 3]", Object.class);
GSON to dobra opcja do konwersji obiektu Java na obiekt JSON i odwrotnie.
Jest to narzędzie udostępnione przez Google.
do konwersji json na obiekt java użyj:
fromJson(jsonObject,javaclassname.class)
do konwersji obiektu java na obiekt json użyj:
toJson(javaObject)
a reszta zostanie wykonana automatycznie
Więcej informacji i do pobrania
źródło
Możesz to łatwo zrobić dzięki Google GSON.
Załóżmy, że masz klasę o nazwie User z polami user, width i height i chcesz przekonwertować następujący ciąg json na obiekt User.
{"name":"MyNode", "width":200, "height":100}
Możesz to łatwo zrobić, bez konieczności rzutowania (pamiętając o komentarzu nimcap;)), używając następującego kodu:
Gdzie jsonString to powyższy ciąg JSON.
Więcej informacji można znaleźć pod adresem https://code.google.com/p/google-gson/
źródło
Masz wiele parserów JSON dla Javy :
JSONObject.java
JSONObject to nieuporządkowany zbiór par nazwa / wartość. Jego zewnętrzną formą jest ciąg zawinięty w nawiasy klamrowe z dwukropkami między nazwami i wartościami oraz przecinkami między wartościami i nazwami. Forma wewnętrzna to obiekt posiadający metody get () i opt () do uzyskiwania dostępu do wartości według nazwy oraz metody put () do dodawania lub zastępowania wartości według nazwy. Wartości mogą być dowolnego z tych typów: Boolean, JSONArray, JSONObject, Number i String lub obiekt JSONObject.NULL.
JSONArray.java
JSONArray to uporządkowana sekwencja wartości. Jego zewnętrzną formą jest ciąg zawinięty w nawiasy kwadratowe z przecinkami między wartościami. Forma wewnętrzna jest obiektem posiadającym metody get () i opt () do uzyskiwania dostępu do wartości według indeksu oraz metody put () do dodawania lub zastępowania wartości. Wartości mogą być dowolnego z tych typów: Boolean, JSONArray, JSONObject, Number i String lub obiekt JSONObject.NULL.
JSONStringer.java
JSONStringer to narzędzie do szybkiego tworzenia tekstu JSON.
JSONWriter.java
JSONWriter to narzędzie do szybkiego zapisywania tekstu JSON w strumieniach.
JSONTokener.java
JSONTokener pobiera ciąg źródłowy i wyodrębnia z niego znaki i tokeny. Jest używany przez konstruktory JSONObject i JSONArray do analizowania ciągów źródłowych JSON.
JSONException.java Wyjątek
JSONException jest generowany po wykryciu błędu składniowego lub proceduralnego.
JSONString.java
JSONString to interfejs, który umożliwia klasom implementację serializacji JSON.
źródło
java
klasy.Powinieneś spojrzeć na oficjalną stronę JSON . Udostępnia różne biblioteki, których można używać z Javą, osobiście korzystałem z tej, JSON-lib która jest implementacją pracy w witrynie, więc ma dokładnie tę samą klasę - metody itp. Na tej stronie .
Jeśli klikniesz tam linki html, możesz znaleźć wszystko, co chcesz.
W skrócie:
aby utworzyć obiekt json i tablicę json, kod wygląda następująco:
o1, o2, mogą być typami pierwotnymi (long, int, boolean), stringami lub tablicami.
Proces odwrotny jest dość prosty, mam na myśli konwersję ciągu na obiekt / tablicę json.
Aby uzyskać poprawną analizę, wystarczy wiedzieć, czy analizujesz tablicę, czy obiekt.
źródło
Użyj do tego biblioteki Google GSON
http://iandjava.blogspot.in/2014/01/java-object-to-json-and-json-to-java.html
źródło
Jak wielu już powiedziało, całkiem prosty sposób na zrobienie tego za pomocą JSON.simple, jak poniżej
Następnie użyj jsonObj do obsługi obiektu JSON. np. jsonObj.get („nazwa”);
Jak na poniższy link, JSON.simple pokazuje stałą wydajność zarówno dla małych, jak i dużych plików JSON
http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json/
źródło
JSON IO to zdecydowanie najłatwiejszy sposób konwersji ciągu JSON lub strumienia wejściowego JSON na obiekt Java
Ciąg do obiektu Java
Object obj = JsonReader.jsonToJava("[\"Hello, World\"]");
https://code.google.com/p/json-io/
źródło
To jest stare pytanie i proste json ( https://code.google.com/p/json-simple/ ) może być w tamtym czasie dobrym rozwiązaniem, ale proszę wziąć pod uwagę, że projekt wydaje się być nieaktywny przez chwilę!
Proponuję Gson, który jest teraz hostowany pod adresem : https://github.com/google/gson
Jeśli Twoim problemem jest wydajność, możesz rzucić okiem na http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json/ niektóre testy porównawcze .
źródło
Oprócz www.json.org możesz także zaimplementować własny parser używając javacc i dopasowując swoją gramatykę / schemat. Zobacz tę notatkę na moim blogu: http://plindenbaum.blogspot.com/2008/07/parsing-json-with-javacc-my-notebook.html
źródło
Napisałem bibliotekę, która używa json.org do parsowania JSON, ale w rzeczywistości utworzy ona dla ciebie proxy interfejsu. Kod / JAR znajduje się na code.google.com.
http://fixjures.googlecode.com/
Nie wiem, czy to działa na J2ME. Ponieważ używa Java Reflection do tworzenia serwerów proxy, myślę, że to nie zadziała. Ponadto obecnie jest mocno zależny od Kolekcji Google, które chcę usunąć i prawdopodobnie jest zbyt ciężki dla Twoich potrzeb, ale pozwala na interakcję z danymi JSON w sposób, którego szukasz:
źródło
Po prostu utwórz obiekt Json w Javie z następującym ciągiem Json
jeśli powyższy ciąg jest ciągiem Json, po prostu utwórz z nim obiekt Json.
źródło
Jackson dla dużych plików, GSON dla małych plików i JSON.simple do obsługi obu.
źródło