Mr.*_*ikh 388 java arrays parsing json
我有一个名为String的变量jsonString:
{"phonetype":"N95","cat":"WP"}
Run Code Online (Sandbox Code Playgroud)
现在我想将其转换为JSON对象.我在Google上搜索得更多,但没有得到任何预期的答案......
dog*_*ane 638
使用org.json库:
try {
JSONObject jsonObject = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
}catch (JSONException err){
Log.d("Error", err.toString());
}
Run Code Online (Sandbox Code Playgroud)
Map*_*pan 150
对于仍在寻找答案的人:
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(stringToParse);
Run Code Online (Sandbox Code Playgroud)
kam*_*aci 43
你可以用google-gson.细节:
对象示例
class BagOfPrimitives {
private int value1 = 1;
private String value2 = "abc";
private transient int value3 = 3;
BagOfPrimitives() {
// no-args constructor
}
}
Run Code Online (Sandbox Code Playgroud)
(串行化)
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);
==> json is {"value1":1,"value2":"abc"}
Run Code Online (Sandbox Code Playgroud)
请注意,您无法使用循环引用序列化对象,因为这将导致无限递归.
(反序列化)
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);
==> obj2 is just like obj
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
产量
{"data1":100,"data2":"hello"}
Run Code Online (Sandbox Code Playgroud)
资源:
小智 24
Java 7解决方案
import javax.json.*;
...
String TEXT;
JsonObject body = Json.createReader(new StringReader(TEXT)).readObject()
Run Code Online (Sandbox Code Playgroud)
;
小智 11
那些由于弃用问题而没有从发布的答案中找到解决方案的人,可以JsonParser使用com.google.gson。
例子:
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();
System.out.println(jsonObject.get("phonetype"));
System.out.println(jsonObject.get("cat"));
Run Code Online (Sandbox Code Playgroud)
Gub*_*ron 10
我喜欢使用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);
...
Run Code Online (Sandbox Code Playgroud)
但是,我认为您的问题更像是,如何从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"));
Run Code Online (Sandbox Code Playgroud)
我认为google-gson的美妙之处在于你不需要处理JSONObject.你只需抓住json,传递类就想要反序列化,你的类属性将与JSON匹配,但是再一次,每个人都有自己的要求,也许你无法负担得到预先映射的类的奢侈反序列化的一面,因为JSON Generating方面的东西可能过于动态.在这种情况下,只需使用json.org.
Cha*_*aru 10
要转换String成JSONObject你只需要将String实例传递给Constructor JSONObject.
例如:
JSONObject jsonObj = new JSONObject("your string");
Run Code Online (Sandbox Code Playgroud)
你必须导入org.json
JSONObject jsonObj = null;
try {
jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
} catch (JSONException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
使用Jacksonwith将字符串转换为JSONcom.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();
Run Code Online (Sandbox Code Playgroud)
Codehaus Jackson - 自 2012 年以来,我一直在为我的 RESTful Web 服务和 JUnit 测试使用这个很棒的 API。使用他们的 API,您可以:
(1) 将 JSON 字符串转换为 Java bean
public static String beanToJSONString(Object myJavaBean) throws Exception {
ObjectMapper jacksonObjMapper = new ObjectMapper();
return jacksonObjMapper.writeValueAsString(myJavaBean);
}
Run Code Online (Sandbox Code Playgroud)
(2) JSON String转JSON对象(JsonNode)
public static JsonNode stringToJSONObject(String jsonString) throws Exception {
ObjectMapper jacksonObjMapper = new ObjectMapper();
return jacksonObjMapper.readTree(jsonString);
}
//Example:
String jsonString = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";
JsonNode jsonNode = stringToJSONObject(jsonString);
Assert.assertEquals("Phonetype value not legit!", "N95", jsonNode.get("phonetype").getTextValue());
Assert.assertEquals("Cat value is tragic!", "WP", jsonNode.get("cat").getTextValue());
Run Code Online (Sandbox Code Playgroud)
(3) 将Java bean 转换为JSON String
public static Object JSONStringToBean(Class myBeanClass, String JSONString) throws Exception {
ObjectMapper jacksonObjMapper = new ObjectMapper();
return jacksonObjMapper.readValue(JSONString, beanClass);
}
Run Code Online (Sandbox Code Playgroud)
参考资料:
JsonNode API - 如何使用、导航、解析和评估来自 JsonNode 对象的值
教程- 简单教程如何使用 Jackson 将 JSON 字符串转换为 JsonNode
使用 org.json.simple.JSONObject 将字符串转换为 Json 对象
private static JSONObject createJSONObject(String jsonString){
JSONObject jsonObject=new JSONObject();
JSONParser jsonParser=new JSONParser();
if ((jsonString != null) && !(jsonString.isEmpty())) {
try {
jsonObject=(JSONObject) jsonParser.parse(jsonString);
} catch (org.json.simple.parser.ParseException e) {
e.printStackTrace();
}
}
return jsonObject;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1300723 次 |
| 最近记录: |