一、使用FastJson
导入依赖
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
对象转Map
SvCatalog svCatalogOne = svCatalogMapper.selectOne(queryWrapper);
Map svCatalogMap = JSONObject.parseObject(JSONObject.toJSONString(), Map.class);
对象转为json
Student student = new Student(0, "Aaron", 24);
System.out.println(JSON.toJSONString(student));
输出结果为:{"age":24,"id":0,"name":"Aaron"}
json转对象
Person person = new Person(20, "John", "Doe", new Date());
String jsonObject = JSON.toJSONString(person);
Person newPerson = JSON.parseObject(jsonObject, Person.class);
jsonObject转Map<String,Object>
String jsonStr="{\"uuid\":\"7429ebc71e12908cbfbbc963f8a92442\",\"userId\":\"38b76fb316634fc197181a17baafc7a3\",\"status\":1,\"isRead\":1,\"advice\":\"可以可以吗\"}";
Map<String, Object> map = JSON.parseObject(jsonStr,new TypeReference<Map<String, Object>>(){} );
json数组转List<Map<String, Object>>
String strJson="[{\"url\":\"www.baidu.com\",\"remark\":\"百度网站\"},{\"url\":\"www.sanya.com\",\"remark\":\"新浪\"}]";
List<Map<String, Object>> remarkList = (List<Map<String, Object>>) JSON.parse(strJson);
二、使用hutool工具
导入依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.0</version>
</dependency>
创建JSONObject
// 方法1
JSONObject json1 = JSONUtil.createObj()
.put("a", "value1")
.put("b", "value2")
.put("c", "value3");
// 方法2
JSONObject json1 = new JSONObject();
转换
1.JSON字符串解析
String jsonStr = "{\"b\":\"value2\",\"c\":\"value3\",\"a\":\"value1\"}";
//方法一:使用工具类转换
JSONObject jsonObject = JSONUtil.parseObj(jsonStr);
//方法二:new的方式转换
JSONObject jsonObject2 = new JSONObject(jsonStr);
//JSON对象转字符串(一行)
jsonObject.toString();
// 也可以美化一下,即显示出带缩进的JSON:
jsonObject.toStringPretty();
2.JavaBean解析
首先我们定义一个Bean
// 注解使用Lombok
@Data
public class UserA {
private String name;
private String a;
private Date date;
private List<Seq> sqs;
}
解析为JSONObject:
UserA userA = new UserA();
userA.setName("nameTest");
userA.setDate(new Date());
userA.setSqs(CollectionUtil.newArrayList(new Seq(null), new Seq("seq2")));
// truee表示跳过空值,否则会报错
JSONObject json = JSONUtil.parseObj(userA, true);