我有一個名為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"}
資料:
第三種方法
這裏JSON home page鏈接了各種Java JSON序列化器和反序列化器。
目前有以下20個:
這個列表還在變化中……
第四種方法
Java 7中的解決方案
import javax.json.*;
...
String TEXT;
JsonObject body = Json.createReader(new StringReader(TEXT)).readObject()
;