简介
fastjson 是阿里巴巴开源的一款工具,前后端在进行数据传输交互的时候,常常会遇到 String 和 Json 格式的相互转化
fastJson默认不显示null值
//设置fastJson序列化,显示为null的值(SerializerFeature.WriteMapNullValue), 默认null不显示
String str = JSON.toJSONString(object, SerializerFeature.WriteMapNullValue);
依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>RELEASE</version>
</dependency>
常用 API
JSON 中的静态方法。由于 JSONObject 是继承自 JSON 的,所以一般使用 JSON 来调用这些静态方法即可
// 把JSON文本parse为JSONObject或者JSONArray
public static final Object parse(String text);
// 把JSON文本parse成JSONObject
public static final JSONObject parseObject(String text);
// 把JSON文本parse为JavaBean
public static final <T> T parseObject(String text, Class<T> clazz);
// 把JSON文本parse成JSONArray
public static final JSONArray parseArray(String text);
//把JSON文本parse成JavaBean集合
public static final <T> List<T> parseArray(String text, Class<T> clazz);
// 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object);
// 将JavaBean序列化为带格式的JSON文本
public static final String toJSONString(Object object, boolean prettyFormat);
//将JavaBean转换为JSONObject或者JSONArray
public static final Object toJSON(Object javaObject);
Bean<=>String 举例
注意变量名需要和 json 中的参数名保持一致!比如说 json 中有个 user_id,那么 bean 中的变量名需要写成 user_id!
/**
* Person 类
*/
@Data
public class Person {
private String name;
private String sex;
private List<String> list;
}
Bean 转 Json 格式的 String
String str = JSON.toJSONString(person)
具体如下:
@Test
void contextLoads() {
Person person = new Person();
person.setName("abcnull");
person.setSex("male");
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
person.setList(list);
System.out.println(JSON.toJSONString(person));
}
输出结果为:
{
"list": ["1", "2", "3"],
"name": "abcnull",
"sex": "male"
}
Json 格式的 String 转 Bean
Person person = JSON.parseObject(str, Person.class)
具体如下:
@Test
void contextLoads() {
String str = "{\"list\":[\"1\",\"2\",\"3\"],\"name\":\"abcnull\",\"sex\":\"male\"}";
Person person = JSON.parseObject(str, Person.class);
System.out.println(person.toString());
}
输出结果为:
Person(name=abcnull, sex=male, list=[1, 2, 3])
JSONObject
我们看 JSONObject 源码可以发现它实现了Map<String, Object>,实际上我们可以把 JSONObject 看成一个 Map
JSONObject jsonObject = new JSONObject();
jsonObject.put("a", 1);
jsonObject.put("b", "123");
System.out.println(jsonObject.toJSONString());
结果如下:
{"a":1,"b":"123"}
原文链接:https://blog.csdn.net/abcnull/article/details/111086753