//json数据格式:{"name":"tom","age":23} key必须双引号引上,value如果是数字不用双引号
//json类型的数组:[{"name":"tom","age":23}]
// \转移字符
//json字符串(json文本) 备注:下面写的Json格式的数据"前面的\,意思是告诉编译器忽略掉它后面的"
//json字符串是json对象的string形式,也就是string,但是符合json对象的格式
//方法的看法:点出来的方法:parse(String text) : objtce :后是返回的类型
String string = "{\"name\":\"tom\",\"age\":23}";
//parse() : object; 转对象,如果jsonobject接收需要强转
Object object = JSON.parse(string);
System.out.println(object); //{"age":23,"name":"tom"}
//parseObject() : Map;
Map<String, Object> map = JSON.parseObject(string, Map.class);
System.out.println(map);//{age=23, name=tom}
System.out.println(map.get("name"));//tom
System.out.println(map.get("age"));//23
//parseArray() : list; string转list操作: 给前台传一个list,前台遍历list
String string1 = "[{\"name\":\"tom\",\"age\":\"23\"}]";
List<String> list = JSON.parseArray(string1,String.class);
System.out.println(list);//[{"age":"23","name":"tom"}]
System.out.println(list.get(0));//{"age":"23","name":"tom"}
System.out.println(list.size());//1
//jsonObject:json对象
//jsonArray:json数组
//parseObject() : jsonBean; 那就可以使用getXxx(..)来得到某key对应的value了
User user = JSON.parseObject(string, User.class);
System.out.println(user.getName());
//jsonObject.parse();
JSONObject jsonObject = new JSONObject();
System.out.println(jsonObject.parse(string));//{"age":23,"name":"tom"}
//数组类型的json转不了map
//Map<String, String> map3 = JSON.parseObject(string1, Map.class);
//System.out.println(map3);
//parseArray(); 参数必须是数组形式的json
JSONArray jsonArray = JSON.parseArray(string1);
System.out.println(jsonArray);//[{"age":"23","name":"tom"}]
//toJSONString(); 将javabean转成json格式的json文本
User user2 = new User("elen",24);
String string2 = JSON.toJSONString(user2);
System.out.println(string2);//{"age":24,"name":"elen"}
javaScript中的json:
JSON:javaScript对象表示法(javaScript Object Notation)。
JSON是存储和交换文本信息的语法。类似xml
JSON更小、更快、更易解析。
<html>
<head>
<title>json</title>
<meta charset="utf-8">
</head>
<body>
name:<span id="name"></span><br>
age:<span id="age"></span>
<script type="text/javascript">
//josnObject:josn对象
var jsonObject = {
"name" : "tom",
"age" : 27
};
document.getElementById("name").innerHTML = jsonObject.name;
document.getElementById("age").innerHTML = jsonObject.age;
</script>
</body>
</html>
JSON得值可以是:
1.数字(整数或浮点数)
2.字符串(在双引号中)
3.逻辑值(true或false)
4.数组(在方括号中)
5.对象(在花括号中)json对象在花括号中书写,可以包含多个键值对。
6.null
<html>
<head>
<title>json</title>
<meta charset="utf-8">
</head>
<body>
name:<span id="name"></span><br>
<script type="text/javascript">
//josnArray:josn数组
var jsonArray = [
{"firstname":"zhangsan","lastname":"lisi"},
{"firstname":"wangerma","lastname":"zhaowu"}
];
document.getElementById("name").innerHTML = jsonArray[0].firstname;
</script>
</body>
</html>
JSON文本转JSON对象:
<html>
<head>
<title>json</title>
<meta charset="utf-8">
</head>
<body>
name:<span id="name"></span><br>
<script type="text/javascript">
//josnArray:josn
var jsonString = '{"jsonArray":[{"firstname":"tom","firstname":"jery"}]}';
//var obj = eval("("+jsonString+")");
obj = JSON.parse(jsonString);
document.getElementById("name").innerHTML = obj.jsonArray[0].firstname;
</script>
</body>
</html>
eval()函数,必须把文本包含在括号中,避免出错,eval("("+jsonString+")");
eval()函数使用的是javascript编译器,可编译执行任何javascript代码,这隐藏了一个潜在的安全问题。
json文本转json对象使用json解析器更安全,只会识别json文本,而不会编译,JSON.parse(jsonString);
菜鸟求纠错补充....