web-dev-qa-db-ja.com

JSON文字列をJava MEのオブジェクトに変換しますか?

Java/J2MEに文字列を変換する方法はありますか。

{name:"MyNode", width:200, height:100}

一行のコードで、同じの内部オブジェクト表現に?

現在の方法は面倒すぎるからです。

Object n = create("new");
setString(p, "name", "MyNode");
setInteger(p, "width", 200);
setInteger(p, "height", 100);

たぶんJSONライブラリ?

116
Robinicks

私はそれらのいくつかを使用しましたが、私のお気に入りは、

http://code.google.com/p/json-simple/

ライブラリは非常に小さいので、J2MEに最適です。

このように1行でJSONをJavaオブジェクトに解析できます。

JSONObject json = (JSONObject)new JSONParser().parse("{\"name\":\"MyNode\", \"width\":200, \"height\":100}");
System.out.println("name=" + json.get("name"));
System.out.println("width=" + json.get("width"));
108
ZZ Coder

最も簡単なオプションは Jackson :です。

MyObject ob = new ObjectMapper().readValue(jsonString, MyObject.class);

同様に簡単に使えるライブラリが他にもあります(Gsonは既に言及されています)。しかし、オリジナルのorg.jsonライブラリのように、中間の "JSONObject"を作成する必要がない場合でも、いくつかの選択はより面倒です。

79
StaxMan

GSONは、Javaオブジェクトをjsonオブジェクトに、またはその逆に変換するのに適したオプションです。
これはGoogleが提供するツールです。

jsonをJavaオブジェクトに変換する方法は次のとおりです。fromJson(jsonObject,javaclassname.class)
Javaオブジェクトをjsonオブジェクトに変換するための使用法:toJson(javaObject)
そして休憩は自動的に行われます

詳しくは 情報とダウンロード用

61
Alok Vaish

これはGoogle GSONを使って簡単に行えます。

フィールドuser、width、およびheightを持つUserというクラスがあり、次のjson文字列をUserオブジェクトに変換するとします。

{"name":"MyNode", "width":200, "height":100}

次のコードを使うと、キャストする必要なく(nimcapのコメントを覚えておいてください;))、簡単に行うことができます。

Gson gson = new Gson(); 
final User user = gson.fromJson(jsonString, User.class);

JsonStringは上記のJSON文字列です。

詳細については、 https://code.google.com/p/google-gson/ をご覧ください。

23
sufinawaz

たくさんあります Java用のJSONパーサー

  • JSONObject.Java
    JSONObjectは、名前と値のペアの順不同のコレクションです。その外部形式は、名前と値の間のコロン、および値と名前の間のコンマで中括弧で囲まれたストリングです。内部形式は、名前で値にアクセスするためのget()およびopt()メソッドと、名前で値を追加または置換するためのput()メソッドを持つオブジェクトです。値は、Boolean、JSONArray、JSONObject、Number、String、またはJSONObject.NULLオブジェクトのいずれかのタイプになります。

  • JSONArray.Java
    JSONArrayは順序付けされた一連の値です。その外部形式は、値の間にコンマを入れた角括弧で囲まれたストリングです。内部形式は、インデックスで値にアクセスするためのget()およびopt()メソッドと、値を追加または置換するためのput()メソッドを持つオブジェクトです。値は、Boolean、JSONArray、JSONObject、Number、String、またはJSONObject.NULLオブジェクトのいずれかのタイプになります。

  • JSONStringer.Java
    JSONStringerは、JSONテキストを迅速に作成するためのツールです。

  • JSONWriter.Java
    JSONWriterは、JSONテキストをストリームに素早く書き込むためのツールです。

  • JSONTokener.Java
    JSONTokenerはソース文字列を受け取り、それから文字とトークンを抽出します。これは、JSONソース文字列を解析するためにJSONObjectおよびJSONArrayコンストラクタによって使用されます。

  • JSONException.Java
    構文エラーまたは手続き上のエラーが検出されるとJSONExceptionがスローされます。

  • JSONString.Java
    JSONStringはクラスがそれらのJSONシリアライゼーションを実装することを可能にするインターフェースです。

22
Esteban Küber

JSON公式サイト はあなたが見るべき場所です。これは、Javaで使用できるさまざまなライブラリを提供しています。私はこれを個人的に使用しています。 JSON-lib これはサイト内の作業の実装であり、まったく同じクラスです - メソッドなどこれで ページ

あなたがそこにhtmlリンクをクリックするならば、あなたはあなたが欲しいものを見つけることができます。

要するに:

jSONオブジェクトとJSON配列を作成するためのコードは次のとおりです。

JSONObject obj = new JSONObject();
obj.put("variable1", o1);
obj.put("variable2", o2);
JSONArray array = new JSONArray();
array.put(obj);

o1、o2は、プリミティブ型(long、int、boolean)、Strings、またはArrayです。

逆のプロセスはかなり簡単です、私は文字列をjsonオブジェクト/配列に変換することを意味します。

String myString;

JSONObject obj = new JSONObject(myString);

JSONArray array = new JSONArray(myString);

正しく解析されるためには、配列とオブジェクトのどちらを解析しているのかを知る必要があります。

7
tzik

これにはGoogle GSON ライブラリを使用してください

public static <T> T getObject(final String jsonString, final Class<T> objectClass) {  
    Gson gson = new Gson();  
    return gson.fromJson(jsonString, objectClass);  
}

http://iandjava.blogspot.in/2014/01/Java-object-to-json-and-json-to-Java.html

7
Ashish Aggarwal

すでに述べたように、以下のようにJSON.simpleを使用してこれを行うための非常に簡単な方法

import org.json.JSONObject;

String someJsonString = "{name:"MyNode", width:200, height:100}";
JSONObject jsonObj = new JSONObject(someJsonString);

そして、jsonObjを使ってJSONオブジェクトを処理します。例:jsonObj.get( "name");

下のリンクにあるように、JSON.simpleは、小さいJSONファイルと大きいJSONファイルの両方に対して一定の効率性を示しています。

http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json/

5
Kripz

JSON IOは、JSON文字列またはJSON入力ストリームをJavaオブジェクトに変換する最も簡単な方法です。

Javaオブジェクトへの文字列
Object obj = JsonReader.jsonToJava("[\"Hello, World\"]");

https://code.google.com/p/json-io/

これは古い質問であり、json-simple( https://code.google.com/p/json-simple/ )が当時の良い解決策になる可能性がありますが、プロジェクトはそうではないと考えてください。しばらくアクティブになるために!

私は現在Ghostをホストしていることをお勧めします。 https://github.com/google/gson

パフォーマンスがあなたの問題であれば、いくつかのベンチマークを見てみることができます http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json / 比較する。

3
Alireza Fattahi

www.json.org とは別に、javaccを使用して、あなたの個人的な文法/スキーマを一致させることで、あなた自身のパーサーを実装することもできます。私のブログでこのメモを参照してください。 http://plindenbaum.blogspot.com/2008/07/parsing-json-with-javacc-my-notebook.html

2
Pierre

大きいファイルの場合はJackson、小さいファイルの場合はGSONJSON.simple両方を扱うため。

2
Thanga

JSONを解析するためにjson.orgを使用するライブラリを作成しましたが、実際にはあなたのためのインターフェースのプロキシを作成します。コード/ JARはcode.google.comにあります。

http://fixjures.googlecode.com/

J2ME上で動作するかどうかはわかりません。 Java Reflectionを使ってプロキシを作成しているので、うまくいかないと思います。また、現在削除したいGoogle Collectionsへの依存度が非常に高く、おそらくニーズには重すぎるので、探している方法でJSONデータとやり取りすることができます。

interface Foo {
    String getName();
    int getWidth();
    int getHeight();
}

Foo myFoo = Fixjure.of(Foo.class).from(JSONSource.newJsonString("{ name : \"foo name\" }")).create();
String name = myFoo.getName(); // name now .equals("foo name");
2
Steve Reed

次のJson Stringを使用して、JavaでJsonオブジェクトを作成するだけです。あなたの場合

{name:"MyNode", width:200, height:100}

上記があなたのJson文字列の場合は、それを使ってJsonオブジェクトを作成するだけです。

JsonString ="{name:"MyNode", width:200, height:100}";
JSONObject yourJsonObject = new JSONObject(JsonString);
System.out.println("name=" + yourJsonObject.getString("name"));
System.out.println("width=" + yourJsonObject.getString("width"));
1
rAm