/**
一、JSON语法:
是JavaScript对象表示语法的子集,它是一种轻量级的文本数据交换格式。
二、JSON 语法规则:
1、数据在名称/值对中,值(value)可以是双引号括起来的字符串(string)、数值(整数或浮点数)(number)、布尔值(true、false)、 null、对象(object)或者数组(array),它们是可以无限嵌套(限制5级内,深不了解析)。
2、数据之间由逗号 , 分隔
3、使用斜杆 \ 来转义字符
4、大括号 {} 保存对象
5、中括号 [] 保存数组,数组可以包含多个对象(对象数组)
三、JSON 的两种结构
1、对象:大括号 {} 保存的对象是一个无序的名称/值对集合。一个对象以左括号 { 开始, 右括号 } 结束。每个"键"后跟一个冒号 :,名称/值对使用逗号 , 分隔。
2、数组:中括号 [] 保存的数组是值(value)的有序集合。一个数组以左中括号 [ 开始, 右中括号 ] 结束,值之间使用逗号 , 分隔。
四、JSON 名称/值对(Map:一个键映射一个值)
*/
public static void main(String[] args) {
String jsonText = """
{
"realName":"李恩恩",
"nickName":"李恩雅",
"age":18,
"sex":true,
"spouse":null,
"height":1.78,
"hobbies":[1028,"摄影","2003-15-78",98.5,"游泳","台球","编程"],
"address":{
"province":"安徽省",
"city":"合肥市",
"district":"包河区",
"street":"包公街道"
}
}
""";
//1. json字符串转换为json对象
JSONObject map = JSON.parseObject(jsonText);
String realName = map.getString("realName");
String nickName = map.getString("nickName");
Integer age = map.getInteger("age");
Boolean sex = map.getBoolean("sex");
Object spouse = map.get("spouse");
Double height = map.getDouble("height");
JSONArray hobbies = map.getJSONArray("hobbies");
JSONObject address = map.getJSONObject("address");
String province = address.getString("province");
String city = address.getString("city");
String district = address.getString("district");
String street = address.getString("street");
System.out.println("姓名:"+realName);
System.out.println("昵称:"+nickName);
System.out.println("年龄:"+age);
System.out.println("性别:"+(sex.booleanValue() ? "男":"女"));
System.out.println("婚否:"+(spouse == null ? "未" : "已"));
System.out.println("身高:"+height + "m");
System.out.println("爱好:"+hobbies.toString());
System.out.println("住址:"+province+city+district+street);
}
输出结果: