Eason-S

导航

浅谈JSON

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

一.JSON 语法规则

  • 数据在键值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

二.基础结构

JSON有对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。

1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

经过对象、数组2种结构就可以组合成复杂的数据结构了。

三.基础示例

1.名称/值对

名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:

{"firstName":"Brett"}
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}

2.表示数组

如果使用 JSON,就只需将多个带花括号的记录分组在一起:

1 {
2     "people":[
3         {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
4         {"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
5         {"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
6     ]
7 }

也可以使用相同的语法表示多个值(每个值包含多个记录):

 1 {
 2     "programmers": [{
 3         "firstName": "Brett",
 4         "lastName": "McLaughlin",
 5         "email": "aaaa"
 6     }, {
 7         "firstName": "Jason",
 8         "lastName": "Hunter",
 9         "email": "bbbb"
10     }, {
11         "firstName": "Elliotte",
12         "lastName": "Harold",
13         "email": "cccc"
14     }],
15     "authors": [{
16         "firstName": "Isaac",
17         "lastName": "Asimov",
18         "genre": "sciencefiction"
19     }, {
20         "firstName": "Tad",
21         "lastName": "Williams",
22         "genre": "fantasy"
23     }, {
24         "firstName": "Frank",
25         "lastName": "Peretti",
26         "genre": "christianfiction"
27     }],
28     "musicians": [{
29         "firstName": "Eric",
30         "lastName": "Clapton",
31         "instrument": "guitar"
32     }, {
33         "firstName": "Sergei",
34         "lastName": "Rachmaninoff",
35         "instrument": "piano"
36     }]
37 }

四.JavaJSON与对象之间的转换

1. 将对象转换为JSON字符串,返回值为一个JSON字符串

1 public static String toJson(Object value) {
2     try {
3         return mapper.writeValueAsString(value);
4     } catch (Exception e) {
5         e.printStackTrace();
6     }
7 
8     return null;
9 }

2.  将JSON字符串转换为实体对象,返回值为实体对象

 1 public static <T> T toObject(String json, Class<T> valueType) {
 2     Assert.hasText(json);
 3     Assert.notNull(valueType);
 4     try {
 5         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 6         mapper.setDateFormat(dateFormat);
 7         return mapper.readValue(json, valueType);
 8     } catch (Exception e) {
 9         e.printStackTrace();
10     }
11     return null;
12 }

 

posted on 2016-07-13 19:58  Eason_S  阅读(354)  评论(0编辑  收藏  举报