JSON详解

阿里巴巴开发的fastjson.jar特别好用,受到广大码农的普遍好评。

  • 概念介绍

JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。
XML也是一种数据交换格式,为什么没有选择XML呢?
因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量。
而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。这篇文章主要从以下几个方面来说明JSON。


  • JSON的两种结构

JSON有两种表示结构,对象和数组。
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

1
2
3
4
5
{
key1:value1,
key2:value2,
...
}

其中关键字是字符串,而值可以是字符串,数值,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
2
var 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
22
var 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
2
3
4
5
6
7
8
9
function ReadJSON(){
alert(obj["1"]);
alert(obj["2"]);

alert(obj.person[0].name); //或者alert(obj.person[0]["name"])
alert(obj.object.msg); //或者alert(obj.object["msg"]);
delete obj.object.msg;//删除数据
obj.object.msg="asdasdas";//增加数据
}

  • JS中json的转换

JSON.parse();eval();JSON.stringify();

对于标准的json字符串,我们可以用JSON.parse(objstr);把JSON字符串转换为JSON对象。
同样的 我们还可以调用JSON.stringify(obj);把JSON对象转为JSON字符串。

1
2
3
4
var 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);

恭喜你,已经学会了哈。

文章目录
|