我有一个名为jsonString 的字符串变量:
{"phonetype":"N95","cat":"WP"}
现在我想把它转换成JSON对象。已在Google上各种搜索查找,但没有得到任何预期的答案…
最佳解决方法
使用org.json库:
JSONObject jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
或者:
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(stringToParse);
第二种解决方法
可以使用google-gson 。细节:
对象示例
class BagOfPrimitives {
private int value1 = 1;
private String value2 = "abc";
private transient int value3 = 3;
BagOfPrimitives() {
// no-args constructor
}
}
(串行化)
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);
==> json is {"value1":1,"value2":"abc"}
请注意,不能序列化具有循环引用的对象,因为这将导致无限递归。
(反序列化)
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);
==> obj2 is just like obj
Gson的另一个例子是:
Gson很容易学习和实现,你需要知道的是以下两种方法:
– > toJson() – 将java对象转换为JSON格式
– > fromJson() – 将JSON转换为java对象
import com.google.gson.Gson;
public class TestObjectToJson {
private int data1 = 100;
private String data2 = "hello";
public static void main(String[] args) {
TestObjectToJson obj = new TestObjectToJson();
Gson gson = new Gson();
//convert java object to JSON format
String json = gson.toJson(obj);
System.out.println(json);
}
}
输出
{"data1":100,"data2":"hello"}
资料:
Google Gson Project Home Page
Gson User Guide
Example
第三种方法
这里JSON home page链接了各种Java JSON序列化器和反序列化器。
目前有以下20个:
-
org.json
-
org.json.me
-
Jackson JSON Processor
-
Json-lib
-
JSON Tools
-
json-simple
-
Stringtree
-
SOJO
-
Restlet
-
Jettison
-
json-taglib
-
XStream
-
JsonMarshaller
-
Flexjson
-
JON tools
-
google-gson
-
Argo
-
Pivot
-
jsonij
-
fastjson
这个列表还在变化中……
第四种方法
Java 7中的解决方案
import javax.json.*;
...
String TEXT;
JsonObject body = Json.createReader(new StringReader(TEXT)).readObject()
;
参考资料
- How to convert String to JSONObject in Java
|