首先引入一个JavaBean类
public class Admin {
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Java对象 -> json字符串:JSON.toJSONString(xxx对象)
Admin admin = new Admin(); admin.setId(1); admin.setName("coderzpw"); admin.setPassword("123");
String adminStr = JSON.toJSONString(admin);
System.out.println(adminStr);
输出结果:
{"id":1,"name":"coderzpw","password":"123"}
json字符串 -> Java对象:JSON.parseObject(jsonStr, xxx.class)
String jsonStr = "{\"id\":1,\"name\":\"coderzpw\",\"password\":\"123\"}";
Admin admin = JSON.parseObject(jsonStr, Admin.class);
System.out.println(admin);
System.out.println(admin.getClass());
输出结果:
com.hkd.springboottest.hkd.bean.Admin@1e692555
class com.hkd.springboottest.hkd.bean.Admin
实际上在很多场景下,我们接收的JSON字符串可能是从第三方服务器上获取的,例如ElasticSearch、Prometheus,这些JSON格式是相对复杂的。而如果我们为了接收这些JSON,而去按照对应的JSON格式来自定义一些解析类接收是非常复杂的,而且容易出错。
对于复杂对象的操作,fastjon中为我们提供了 JSONObject
:json对象、JSONArray
:json数组对象,这两种对象方便我们对复杂JSON数据的解析
Json字符串 -> JSON对象: JSONObject.parseObject(jsonStr)
Json数组字符串 -> JSON数组对象: JSONObject.parseArray(jsonArrStr)
接下来我以操作这个JSON为例
{
"部门名称":"研发部",
"部门成员":[
{"ID": 1001, "name": "张三", "age": 24},
{"ID": 1002, "name": "李四", "age": 25},
{"ID": 1003, "name": "王五", "age": 22}],
"部门位置":"xx楼21号"
}
目标:张三的年龄
请思考如下代码:
public Object test1(){
String json = "{\n" +
"\t\"部门名称\":\"研发部\",\n" +
"\t\"部门成员\":[\n" +
"\t{\"ID\": 1001, \"name\": \"张三\", \"age\": 24},\n" +
"\t{\"ID\": 1002, \"name\": \"李四\", \"age\": 25},\n" +
"\t{\"ID\": 1003, \"name\": \"王五\", \"age\": 22}],\n" +
"\t\"部门位置\":\"xx楼21号\"\n" +
"}";
// 首先把json字符串转成json对象
JSONObject totalJsonObject = JSONObject.parseObject(json);
// 1、 获取到 “成员部门” 这个数组对象
JSONArray cybm = totalJsonObject.getJSONArray("部门成员");
// 2、 获取该数组的第一个json对象
JSONObject jsonObject = cybm.getJSONObject(0);
// 3、 获取这个对象的“age”
String age = jsonObject.getString("age");
return age;
}
操作复杂Json对象的常用方法如下:
JSONObject.parseObject(jsonStr) :Json字符串 -> JSON对象
JSONObject.parseArray(jsonArrStr):Json数组字符串 -> JSON数组对象
xxx.getJSONArray("key"): 获取json对象的json数组
xxx.getJSONObject(index): 获取json数组的第index个json对象
xxx.getJSONObject("key"): 获取json对象内层名为"key"的内层json对象
xxx.getString("key"): 获取json对象中key为“key”的字符串
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_45464560/article/details/123814249
内容来源于网络,如有侵权,请联系作者删除!