我有一个名为jsonString的字符串变量:

{"phonetype":"N95","cat":"WP"}

现在我想把它转换成JSON对象。我在谷歌上搜索了更多,但没有得到任何预期的答案!


当前回答

java7解决方案

import javax.json.*;

...

String TEXT;
JsonObject body = Json.createReader(new StringReader(TEXT)).readObject()

;

其他回答

对于仍在寻找答案的人:

JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(stringToParse);

我喜欢为此使用google-gson,这正是因为我不需要直接使用JSONObject。

在这种情况下,我将有一个类,将对应于JSON对象的属性

class Phone {
 public String phonetype;
 public String cat;
}


...
String jsonString = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";
Gson gson = new Gson();
Phone fooFromJson = gson.fromJson(jsonString, Phone.class);
...

然而,我认为你的问题更像是,我如何从JSON字符串中得到一个实际的JSONObject对象。

我在看google-json api,找不到任何直接的东西 org。json的api,这可能是你想要使用的,如果你非常需要使用一个基本的JSONObject。

http://www.json.org/javadoc/org/json/JSONObject.html

使用org.json.JSONObject(另一个完全不同的API)如果你想做一些像…

JSONObject jsonObject = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
System.out.println(jsonObject.getString("phonetype"));

我认为google-gson的美妙之处在于您不需要处理JSONObject。你只需要获取json,传递想要反序列化的类,你的类属性就会与json匹配,但话说回来,每个人都有自己的需求,也许你不能奢侈地在反序列化端拥有预先映射的类,因为json生成端可能太动态了。在这种情况下,只需使用json.org。

字符串到JSON使用Jackson com.fasterxml.jackson.databind:

假设你的json-string表示如下:jsonString = {"phonetype":"N95","cat":"WP"}

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
 * Simple code exmpl
 */
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonString);
String phoneType = node.get("phonetype").asText();
String cat = node.get("cat").asText();

最好使用更简单的方式使用org。json自由。只需要做一个非常简单的方法:

JSONObject obj = new JSONObject();
obj.put("phonetype", "N95");
obj.put("cat", "WP");

现在obj是你各自String的JSONObject转换形式。这是在有名称-值对的情况下。

对于字符串,可以直接传递给JSONObject的构造函数。如果它是一个有效的json String,那么好,否则它会抛出异常。

将字符串转换为json, sting就像json一样。{“phonetype”:“N95”,“猫”:“WP”}

String Data=response.getEntity().getText().toString(); // reading the string value 
JSONObject json = (JSONObject) new JSONParser().parse(Data);
String x=(String) json.get("phonetype");
System.out.println("Check Data"+x);
String y=(String) json.get("cat");
System.out.println("Check Data"+y);