JSON是什么?
JSON 是一种数据格式。它本身是一串字符串,只是它有固定格式的字符串,符合这个数据格式要求的字符串,我们称之为JSON。
JSON 常用来数据传输,因为它易于程序之前读写操作。
JSON 它其实是来自JavaScript对对象(Object)的定义。但是它作为数据格式来使用的时候,和JavaScript没有任何关系,它只是参照了JavaScript对对象定义的数据格式。
JSON 它可以服务任何语言,C、C++、Java、Objective-C、Python、Go、等,在各个语言中的字典、Map和JSON是类似的结构,所以它们之间可以相互转换。
通俗点说就是:
- JSON 就是一种有规则字符串。
- JSON 就是Key/Vaule存储,理论上Key支持String、Number,Value几乎支持所有类型。
- JSON 因为语言都支持字符串(String)类型,所以都支持JSON格式作为交互。
JSON语法
JSON 语法规则
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON 数据的书写格式是:{Key:Value}、{Key:Array}。
前面key是键,中间是英文的“:”(冒号),然后是值(可以是数组)。但是注意的是如果是字符串,严格来说都是英文双引号引起来的
json有2种类型:
- 一种是对象,object -> {key:value,key:value,...}
- 另一种是数组,array -> [value,value,...]
JSON 对象
JSON 对象在花括号中,对象可以包含多个名称/值对,如下代码所示:
{
"name": "少年贝多芬",
"age": 20,
"birthday": "2000年01月01日",
}
JSON 数组
JSON数组在方括号("[]")中书写,数组可包含多个对象,如下“books”描述
{
"books":[
{
"name":"Java开发教程",
"price":"118"
},
{
"name":"C++开发案例",
"price":"99"
}
]
}
Java解析和生成JSON
这里我使用的是gson,需要引入gson.jar,在gson的开源网站即可下载
通用代码:
借助json数据来生成java对象的代码都是一致的:
Gson gson = new Gson();
BeanType bean = gson.fronJson(jsonData, BeanType.class);
字段名并不一致怎么办?
如果前端传过来的json
数据的key和我们java类的字段不一致,就需要在java类中手工进行指定。
@SerializedName()
注解
@SerializedName("money")
private String salary;
@SerializedName({"money", "salary"}) // 可以有多个备选值
private String salary;
生成json数据
Gson gson = new Gson();
String json = gson.toJson(需要转化的对象);