在Java ME中把JSON字符串转换为对象?

在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。

你可以像这样在一行中把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"));
评论(3)

你有很多Java的JSON解析器

  • JSONObject.java。 一个JSONObject是一个无序的名/值对的集合。它的外部形式是一个用大括号包裹的字符串,名字和值之间用冒号,值和名字之间用逗号。内部形式是一个具有get()和opt()方法的对象,用于按名称访问数值,而put()方法用于按名称添加或替换数值。值可以是这些类型中的任何一种。布尔、JSONArray、JSONObject、Number和String,或者JSONObject.NULL对象。

  • JSONArray.java。 一个JSONArray是一个有序的值序列。它的外部形式是一个用方括号包裹的字符串,数值之间有逗号。内部形式是一个具有get()和opt()方法的对象,用于通过索引访问数值,而put()方法用于添加或替换数值。值可以是这些类型中的任何一种。布尔型、JSONArray、JSONObject、Number和String,或者JSONObject.NULL对象。

  • JSONStringer.java 。 JSONStringer是一个用于快速生成JSON文本的工具。

  • JSONWriter.java。 JSONWriter是一个快速写入JSON文本到流的工具。

  • JSONTokener.java。 JSONTokener接受一个源字符串并从中提取字符和标记。它被JSONObject和JSONArray构造函数用来解析JSON源字符串。

  • JSONException.java。 当检测到语法或程序错误时,会抛出一个JSONException。

  • JSONString.java。 JSONString是一个接口,允许类实现其JSON序列化。

评论(6)

除了www.json.org,你还可以使用javacc实现你自己的解析器,并匹配你的个人语法/架构。 请看我博客上的这个说明:http://plindenbaum.blogspot.com/2008/07/parsing-json-with-javacc-my-notebook.html

评论(2)