本文共 2962 字,大约阅读时间需要 9 分钟。
全称为:JavaScript Object Notation
,JavaScript对象表示法。
用途:1.json现在多用于存储和交换文本信息的语法2.进行数据的传输特点:1.JSON 比 XML 更小、更快,更易解析。
* 数据在名称/值对中:json数据是由键值对构成的 * 键用引号(单双都行)引起来,也可以不使用引号 * 值得取值类型: 1. 数字(整数或浮点数) 2. 字符串(在双引号中) 3. 逻辑值(true 或 false) 4. 数组(在方括号中) { "persons":[{ },{ }]} 5. 对象(在花括号中) { "address":{ "province":"陕西"....}} 6. null* 数据由逗号分隔:多个键值对由逗号分隔* 花括号保存对象:使用{ }定义json 格式* 方括号保存数组:[]
例子1:定义数据
JSON演示
1. json对象.键名2. json对象["键名"]3. 数组对象[索引]4. 遍历
例子2:获取值
JSON演示
例子3:遍历取值
JSON演示
这一相互转换需要用到JSON
解析器
常见的JSON解析器:Jsonlib,Gson,fastjson,jackson
要使用解析器,就得导入jar
包,我们选择jackson
:
链接:https://pan.baidu.com/s/1Gm5I6-SDds9J11kCQQDPcA
提取码:8j3a
接下来我们创建User
类:
public class User { private String name; private int age; private Date birthday; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + ", birthday=" + birthday + '}';}}
测试代码1:
@Testpublic void test() throws IOException { //1.创建User对象 User user = new User(); user.setAge(22); user.setName("jack"); user.setBirthday(new Date()); //2.创建jackson的核心对象 ObjectMapper ObjectMapper mapper = new ObjectMapper(); //3.转换 /* 转换方法: writeValue(参数1,obj): 参数1: File:将obj对象转换为JSON字符串,并保存到指定的文件中 Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中 OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中 writeValueAsString(obj):将对象转为json字符串 */ String json = mapper.writeValueAsString(user); System.out.println(json); File file = new File("D://a.txt"); mapper.writeValue(file,json);}上面的
birthday
是一串看不懂的数字,我们用(注解)来解决这个问题。 1. @JsonIgnore:排除属性。2. @JsonFormat:属性值得格式化例如: @JsonFormat(pattern = "yyyy-MM-dd")再次运行:
@JsonIgnor
e注解帮助我们把birthday
未进行转化,但是我们不希望这样,于是我们先撤掉这个注解。使用@JsonFormat
测试代码:
public void test() throws IOException { String json = "{\"name\":\"jack\",\"age\":22,\"birthday\":1596299850579}"; ObjectMapper mapper = new ObjectMapper(); User user = mapper.readValue(json, User.class); System.out.println(user);}上面是简单对象的转换,对于Map集合与List集合,他们的结果会是下面形式:
1. List:数组Listres = objectMapper.readValue(info, new TypeReference
>(){ });2. Map:对象格式一致
{"url":"123"}
,我闷本来预期的还有两个弹出,这是由于运行下面这一步的时候,'{url:"123"}'
这样的串是无法转为json对象
的,必须把url
也用引号引起来: var jsonObj = $.parseJSON('{url:"123"}');
我们修改为{"url":"123"}
继续测试:
$.parseJSON('{url:"123"}');
可以成功,但是$.parseJSON("{'url':'23'}");
却会报错,如果有大佬可以解答请在评论区留言。 转载地址:http://vxlzi.baihongyu.com/