阿里巴巴开发的fastjson.jar特别好用,受到广大码农的普遍好评。
- 概念介绍
JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。
XML也是一种数据交换格式,为什么没有选择XML呢?
因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量。
而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。这篇文章主要从以下几个方面来说明JSON。
- JSON的两种结构
JSON有两种表示结构,对象和数组。
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。
1 | { |
其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组。
数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。1
2
3
4
5
6
7
8
9
10[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
- 认识JSON字符串和JSON对象的区别
JSON字符串:即是JSON格式的字符串。
JSON对象:就是符合格式要求的对象。
比如:1
2var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };
- js中如何使用JSON
JSON定义:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22var obj = {
"1": "value1",
"2": "value2",
"count": "3",
"person": [ //数组结构JSON对象,可以嵌套使用
{
"id": 1,
"name": "张三"
},
{
id: 2,
name: "李四"
}
],
"object": { //对象结构JSON对象
id: 1,
msg: "对象里的对象"
}
};
alert(obj["1"]);
alert(obj.person[0].id);
JSON读取修改删除数据
1 | function ReadJSON(){ |
- JS中json的转换
JSON.parse();eval();JSON.stringify();
对于标准的json字符串,我们可以用JSON.parse(objstr);把JSON字符串转换为JSON对象。
同样的 我们还可以调用JSON.stringify(obj);把JSON对象转为JSON字符串。1
2
3
4var G = '{ "a" : 1 , "b" : window.location.href="https://www.baidu.com" }';
var obj = '{"count": "3","ss":"opop"}';
alert(JSON.parse(obj));
alert(eval("("+G+")"));
讲解:
JSON.parse()只能转换标准的json字符串,而eval(“(“+G+”)”);能转换不标准的字符串。比如 var A = “{ a: 1 , b : ‘hello’ }”;
但同时也存在一个问题,比如在eval解析G的时候,直接跳转到百度首页了,这样很不安全,所以我们在转换的时候要用JSON.parse()。
- java中的JSON使用
List list = new ArrayList();
list.add(0,"1000");
list.add(1,"2000");
Map map = new HashMap<>();
map.put("class","9.1");
map.put("school","erlong");
map.put("List", list);
JSONObject obj = new JSONObject();
String jsonstr = JSON.toJSONString(map);//造json字符串
System.out.println(jsonstr);
JSONObject obj2 = JSON.parseObject(jsonstr);//json字符串转为JSON对象
JSONArray jsarr=obj2.getJSONArray("List");//取JSON中的list数据
System.out.println(jsarr.toString());
Date date = new Date();
String s = JSON.toJSONStringWithDateFormat(date,"yyyy-MM-dd");
System.out.println(s);
恭喜你,已经学会了哈。