一、什么是Json格式?
先直接上代码,直观感受一下:(该例子来自WikiPedia)
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 27,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
}
],
"children": [
"Catherine",
"Thomas",
"Trevor"
],
"spouse": null
}
上述代码就是用Json格式来描述一个人,这个人有姓名、年龄、电话地址、手机号码等等信息。
二、Json介绍
- Json (JavaScript Object Notation) 是一种数据格式,而非编程语言。这就意味着,不论是Java语言编写的程序,还是C语言,还是其他,他们的Json数据都是一样的。(都是这种格式)
- Json格式方便人阅读,也便于计算机解析。
- Json是一种轻量级的数据交换格式,可用于客户端与服务器端的数据交换。
三、Json语法
- Json格式是键值对形式,如 "lastName" : "smith" 就是键/值的形式。键都是字符串的形式,要用双引号括起来。值可以是Boolean、String (要用双引号括起来)、Number、数组、还可以是null。
- 花括号{}代表对象,中括号[]代表数组。
- 数组中可以放常规值(上面的children),还可以嵌套对象(上面的phoneNumbers)。
- 每个键值对后面都要写逗号,除了最后一个(花括号{}和中括号[]中的最后一个键值对都不写)。
以上语法在一开始的代码中都有体现,请对照理解。
四、Json与Java对象的关系
上述例子中的Json格式数据,要是想用Java的面向对象思想表示,那就是:(只列举lastName、isAlive和age三个值)
class Person{
public String lastName;
public Boolean isAlive;
public Int age;
}
main{
Person person = new Person();
person.lastName = "smith";
person.isAlive = true;
person.age = 20;
}
以上就简单的说明了Json数据格式和Java对象的联系。
因为服务器端返回的是Json数据格式,因此在Java程序中,我们发送网络请求Get数据后,经常要解析 Json格式数据---转换成--->Java对象。同理,我们向服务器端提交数据POST时,也要将Java对象---转换成--->Json格式数据。
这就涉及到他们俩之间的转换,有很多优秀的库解决了这个问题,这些内容,有空再下面再补齐。