0X00前言

JSON可以说是javascript的一种数据类型,我们学习JSON是为了在客户端的数据给读取出来,官方的解释是:概述:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效

0x01基础使用

(1).概念:javaScript Object Notation javaScript对象表示法

(2).实例:

​ var p={"name":"张三“,"age":"23",""gender:"男"}

​ *json现在多用于存储和交换文本信息的语法

​ *进行数据传输

​ *JSON比XML更小、更快、更容易解析。

(3).语法:

  1. 数据在名称/值对中:json数据是由键值对构成的

    1. 数字(整数或者浮点数)
    2. 字符串(双引号里面)
    3. 逻辑值(true or flase)
    4. 数组(方括里面){"people":[{},{}]}
    5. 对象 (花括号里面){"address":{"province:"山西"}}
  2. 键用引号(单双都可以)引起来,也可以不使用
  3. 数据用逗号分割 多个键值对之间用逗号隔开
  4. 花括号保存对象
  5. 方括号保存数据

0x02使用代码

0x1JSON格式

  • JSON的格式是多变的,具有很多种嵌套方式,数组嵌套键值对,键值对嵌套数组
  • 不同的格式具有在不同场景的实用性
<script>
var person={name:"张三",age:23,gnder:true};
//alert(person);//嵌套
var persons={person:[{name:"张三",age:23,gnder:true},
{name:"钟三",age:23,gnder:true},
{name:"王四",age:65,gender:false}
]
}
var ps=[{name:"张三",age:23,gnder:true},
{name:"钟三",age:23,gnder:true},
{name:"王四",age:65,gender:false}]
</script>

0x2获取JSON对象

  1. json对象.键名

  2. json对象["键名"](这个要加双引号)

  3. 数组用索引下标

    看一下简单的js代码

<script>
var person={name:"张三",age:23,gnder:true};
//alert(person);//嵌套
var persons={person:[
{name:"张三",age:23,gender:true},
{name:"钟三",age:23,gender:true},
{name:"王四",age:65,gender:false}]
}
var ps=[{name:"张三",age:23,gender:true},
{name:"钟三",age:23,gender:true},
{name:"王四",age:65,gender:false}]
var name=person.name
var person1 = persons.person[1].name;
for (var ket in person){
alert(person[ket])//拿到的是键名name,age,gender
}
//获取ps中所有的值
for (var i=0;i<ps.length;i++){
var p=ps[i];
for (var key in p){
alert(key+":"+p[key]);
}
} </script>

0x03Java对象转化成json对象

JSON解析器:Jackson

转化方法:wirteValue(参数1,obj);
参数1:
File 将obj对象转化为JSON字符串,并保存到指定文件中
Writer:将obj对象转化成JSON字符串,并将json数据填充到字符输出流里面
OutputStream:将obj对象转化成json字符串,并填充到字节输出流
Writer
writeValueAsString :对象转化成json

代码使用

person对象和前面的对象一样三个键值对,name、age、gender

@Test
public void test() throws IOException {
Person person = new Person();
person.setAge(23);
person.setGender(true);
person.setName("张无");
//创建jackson的核心对象 ObjectMapper
ObjectMapper objectMapper = new ObjectMapper(); String s = objectMapper.writeValueAsString(person);
System.out.println(s);
objectMapper.writeValue(new File("c://testdemo1.txt"),person); }}

有些时候属性我们会不想要某些属性被js判断出来,可以采用注解的方式去@JacksonInject//忽略该属性,这样就不会被输出出来

或者通过 @JsonFormat(pattern = "yyyy-MM-dd")去修改属性格式。

Person类

public class Person {
private String name;
private int age;
private boolean gender;
@JsonIgnore
private String grifrind;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday; public String getGrifrind() {
return grifrind;
} public void setGrifrind(String grifrind) {
this.grifrind = grifrind;
} 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 boolean isGender() {
return gender;
} public void setGender(boolean gender) {
this.gender = gender;
} @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
'}';
}

0x04Json转换成Java对象

  • 转换方法:writeValue(参数1,obj)

  • 把字符串传入readValue函数,然后确定返回的对象类。

    public class JSONdemo2 {
    @Test
    public void test() throws IOException {
    String json="{\"name\":\"钟三\",\"age\":44,\"gender\":false,\"birthday\":\"2022-05-27\"}]";
    //创建ObjectMapper
    ObjectMapper objectMapper = new ObjectMapper();
    Person person = objectMapper.readValue(json, Person.class);
    System.out.println(person);
    }
    }

0x05总结

继续冲啊,内容很简单就是一些数据交互,马上就要进入框架的学习了准备沉淀一下。

最新文章

  1. Linux 相关面经
  2. Android Preference
  3. 虚拟机安装Mac OS X ----- VM12安装Mac OS X
  4. sql group by+字段
  5. Android-WizardPager
  6. WF工作流与管理类应用系统工作流需求实现的一些误区
  7. 博客搬家到CSDN:http://blog.csdn.net/yeweiouyang
  8. Random类短时间大量随机重复的问题
  9. 归并排序的go语言与C++实现对比
  10. stl中的容器、迭代器和算法----vector中的find实现
  11. SpringMVC中参数绑定
  12. SSM-SpringMVC-04:SpringMVC深入浅出理解HandleMapping(源码刨析)
  13. 不能完整读取txt文件问题
  14. java学习 之 操作符
  15. Django中STATIC_URL、STATIC_ROOT、STATICFILES_DIRS 的区别关系
  16. ECMAScript6 入门教程 初学记录let命令 块级作用域
  17. ubuntu汉化
  18. jsonp小案例
  19. bzoj1081
  20. 【树】Serialize and Deserialize Binary Tree

热门文章

  1. 第七十四篇:Vue组件父子传值
  2. Python获取时光网电影数据
  3. PostgreSQL 涉及复杂视图查询的优化案例
  4. KingbaseES 普通表在线改为分区表案例
  5. KingbaseES图形化安装未弹出界面应该如何处理
  6. 运维利器-ClusterShell
  7. MySQL半同步复制源码解析
  8. LFS(Linux From Scratch)构建过程全记录(六):交叉编译临时工具
  9. PLM产品生命周期管理,包含哪些阶段?
  10. typora收费了,最后一个免费版提供下载