Java中String类型的字符串转换成JSON对象和JSON字符串
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、Java字符串String类型转换成Json对象
- 二、序列化
- 1.引入fastjson依赖
- 2.序列化的使用
- 三、反序列化
- 1.引入fastjson依赖
- 2.反序列化的使用
一、Java字符串String类型转换成Json对象
在开发中会遇到接收前端传入一个Json对象,然后Json对象里面又有一个字段是Json字符串,例如
{
"code": "000000",
"msg": "{\"createTime\":\"20241225\",\"orderId\": \"CP100001\"}"
}
上面的msg字段,如果我们在后端用Map<String, Object>类型去接收,一般使用的代码是
String msg = map.get("msg");
这样,我们打印msg的结果就是上面所见到的,变成了一个String类型的Java字符串,那么我们想要获取msg里面的oderId字段,需要先将String类型的msg字段转换成JSON对象JSONObject
//java字符串转JSON对象
JSONObject jsonObject = JSON.parseObject(msg);
//可以直接从json对象里拿到想要的字段
String orderId = jsonObject.getString("orderId");
如果想要在转化成JSON字符串,可以
String jsonOrderId = JSONObject.toJSONString("orderId");
二、序列化
1.引入fastjson依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.23</version>
</dependency>
2.序列化的使用
序列化就是指 把JavaBean对象转成JSON格式的字符串。
基本的序列化
//对象转换成JSON字符串
String objJson = JSON.toJSONString(Object object);
(1)Map转Json字符串
Map<String, Object> map = new HashMap<String, Object>();
map.put("key1", "One");
map.put("key2", "Two");
String mapJson = JSON.toJSONString(map);
输出结果:
{"key1":"One","key2":"Two"}
(2)自定义的JavaBean转Json字符串
User user = new User();
user.setUserName("李四");
user.setAge(24);
String userJson = JSON.toJSONString(user);
输出结果:
{"age":24,"userName":"李四"}
三、反序列化
1.引入fastjson依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.23</version>
</dependency>
2.反序列化的使用
反序列化就是把JSON格式的字符串转化为Java Bean对象
(1)基本的反序列化
将上面的userJson字符串反序列化成javaBean对象
User user1 = JSON.parseObject(userJson, User.class);
System.out.println(user1.getUserName());
输出结果:
李四
(2)泛型的反序列化
泛型的反序列化,使用 TypeReference 传入类型信息
Map<String, Object> map1 = JSON.parseObject(mapJson, new TypeReference<Map<String, Object>>(){});
System.out.println(map1.get("key1"));
System.out.println(map1.get("key2"));
输出结果:
One
Two