目录
JSON.toJSONString():Java对象转JSON字符串
JSON.parseObject():JSON字符串转Java对象
JSONObject.parseObject():JSON字符串转换成 JSONObject对象
JSONObject.toJSONString(): JSONObject对象转成JSON字符串
四、 JSONObject.parseObject和JSON.parseObject区别和联系?
五、JSON.parse()和JSON.parseObject()区别和联系?
FastJSON 是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
FastJSON 使用十分方便,只需要在 Maven 工程的 pom 文件中引入以下依赖即可:
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
</dependencies>
FastJSON 提供了几个核心类来处理 JSON 数据。在包中可以发现主要的3个类,JSON,JSONArray,JSONObject,三者之间的关系如下,JSONObject和JSONArray继承JSON。
一、JSON类和JSONObject类的区别和联系
JSON和JSONObject 两个类的源码如下所示,
public abstract class JSON implements JSONStreamAware, JSONAware {
public static JSONObject parseObject(String text) {
Object obj = parse(text);
if (obj instanceof JSONObject) {
return (JSONObject)obj;
} else {
try {
return (JSONObject)toJSON(obj);
} catch (RuntimeException var3) {
throw new JSONException("can not cast to JSONObject.", var3);
}
}
}
}
public class JSONObject extends JSON implements Map<String, Object>, Cloneable, Serializable, InvocationHandler {
public static JSONObject parseObject(String text) {
// 解析字符串为对象
Object obj = parse(text);
if (obj instanceof JSONObject) { // 判断解析后的对象类型
return (JSONObject)obj;
} else {
try {
return (JSONObject)toJSON(obj);
} catch (RuntimeException var3) {
throw new JSONException("can not cast to JSONObject.", var3);
}
}
}
}
我们可以从源码中看出,JSON是一个抽象类,JSON中有一个静态方法parseObject(String text),将text解析为一个JSONObject对象并返回。而JSONObject是一个继承自JSON的类,当调用JSONObject.parseObject(result)时,会直接调用父类的parseObject(String text)。
所以两者没什么区别,一个是用父类去调用父类自己的静态的parseObject(String text),一个是用子类去调用父类的静态parseObject(String text),两者调的是同一个方法。
二、JSON类
JSON.toJSONString():Java对象转JSON字符串
这个方法接受一个Java对象作为参数,并返回该对象对应的JSON字符串。
import com.alibaba.fastjson.JSON;
public class Example {
public static void main(String[] args) {
User user = new User("Alice", 30);
String jsonString = JSON.toJSONString(user);
System.out.println(jsonString);