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ライブラリ?
私はそれらのいくつかを使用しましたが、私のお気に入りは、
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"));
最も簡単なオプションは Jackson :です。
MyObject ob = new ObjectMapper().readValue(jsonString, MyObject.class);
同様に簡単に使えるライブラリが他にもあります(Gsonは既に言及されています)。しかし、オリジナルのorg.jsonライブラリのように、中間の "JSONObject"を作成する必要がない場合でも、いくつかの選択はより面倒です。
GSONは、Javaオブジェクトをjsonオブジェクトに、またはその逆に変換するのに適したオプションです。
これはGoogleが提供するツールです。
jsonをJavaオブジェクトに変換する方法は次のとおりです。fromJson(jsonObject,javaclassname.class)
Javaオブジェクトをjsonオブジェクトに変換するための使用法:toJson(javaObject)
そして休憩は自動的に行われます
詳しくは 情報とダウンロード用
これは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/ をご覧ください。
たくさんあります 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シリアライゼーションを実装することを可能にするインターフェースです。
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);
正しく解析されるためには、配列とオブジェクトのどちらを解析しているのかを知る必要があります。
これには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
すでに述べたように、以下のように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/
JSON IOは、JSON文字列またはJSON入力ストリームをJavaオブジェクトに変換する最も簡単な方法です。
Javaオブジェクトへの文字列Object obj = JsonReader.jsonToJava("[\"Hello, World\"]");
これは古い質問であり、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 / 比較する。
www.json.org とは別に、javaccを使用して、あなたの個人的な文法/スキーマを一致させることで、あなた自身のパーサーを実装することもできます。私のブログでこのメモを参照してください。 http://plindenbaum.blogspot.com/2008/07/parsing-json-with-javacc-my-notebook.html
大きいファイルの場合はJackson、小さいファイルの場合はGSON、JSON.simple両方を扱うため。
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");
次の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"));