pom - www json org java




在Java ME中將JSON字符串轉換為對象? (10)

有沒有在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庫?


GSON是將java對象轉換為json對象的好選擇,反之亦然。
這是一個由谷歌提供的工具。

用於將json轉換為java對象使用: fromJson(jsonObject,javaclassname.class)
將java對象轉換為json對象使用: toJson(javaObject)
休息將自動完成

有關更多信息和下載


JSON IO是將JSON字符串或JSON輸入流轉換為Java對象的最簡單方法

字符串到Java對象
Object obj = JsonReader.jsonToJava("[\"Hello, World\"]");

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



像許多人已經說過的那樣,使用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文件都顯示出恆定的效率

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


大文件的傑克遜 ,小文件的GSON和處理兩者的JSON.simple


您可以使用Google GSON輕鬆完成此操作。

假設您有一個名為User的類,其中包含字段user,width和height,並且您希望將以下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/


我使用了其中的一些,我最喜歡的是,

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

該庫非常小,因此非常適合J2ME。

您可以像這樣在一行中將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"));

我寫了一個使用json.org來解析JSON的庫,但它實際上會為您創建一個接口的代理。 代碼/ JAR位於code.google.com上。

http://fixjures.googlecode.com/

我不知道它是否適用於J2ME。 由於它使用Java反射來創建代理,所以我認為它不起作用。 此外,它目前對我想要移除的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");






serialization