一、简介
二、json两种构造结构
三、js解析JSON
1、JSON2解析JSON
2.用eval()方法把JSON字符串转化成JSON对象.
3.使用JSON2中的JSON对象的parser()方法解析JSON字符串
4. 使用JSON2中的JSON对象的stringify ()方法把JSON对象转换成字符串
5、案例
四、Java解析JSON
一、简介
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999(信息标准化和通信系统(由netscpace公司Brendan Eich提出, 本标准在1999年11月被ECMA General Assembly接受采纳为ECMA-262第3版。))的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言
二、json两种构造结构
{name:”小花”}对象
- “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
[“aa”,”bb”]
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。 {name:‘aa’}
示例:
var ob={name:”小花”,age:23,address:”nc”}
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。 var arr=[“aa”,”bb”,”cc”]
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
var arr=[“小花”,”小白”];
var arr1=[];
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
字符串(string)与C或者Java的字符串非常相似。
数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
三、js解析JSON
1、JSON2解析JSON
1.访问JSON对象中的成员我们可以如下使用:
test1.js
<script type="text/javascript">
var myJSONObject = {"students": [
{"stId": "001", "stName": "小花", "stAge": "23"},
{"stId": "002", "stName": "小红", "stAge": "24"}
]
};
alert(myJSONObject.students[0].stName);
</script>
2.用eval()方法把JSON字符串转化成JSON对象.
把JSON字符串转化成JSON对象,可以使用eval()函数。
test2.js
<script type="text/javascript">
var myObject = eval('({"name":"ss"})');
alert(myObject.name); //结果ss
<script>
eval()函数的速度很快,但是由于它能编译和解析任何JS程序,所以它的安全性不高,如果要求安全性,可以使用JSON的parser。
3.使用JSON2中的JSON对象的parser()方法解析JSON字符串
http://www.json.org/json2.js下载json2.js
test3.js
<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript">
var str='{"name":"oracleer", "age":23}';
var ob=JSON.parse(str) ;
alert(ob.name)
</script>
4. 使用JSON2中的JSON对象的stringify ()方法把JSON对象转换成字符串
<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript">
var json={"name":"oracleer", "age":23};
var str=JSON.stringify(str) ;
alert(str)
</script>
5、案例
<%--
Created by IntelliJ IDEA.
User: 杪&秋
Date: 2022/12/30
Time: 19:12
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>json</title>
<script src="js/json2.js"></script>
<script type="text/javascript">
/*键值对*/
var obj = {name:"小明",age:23,address:"杭州"};//json格式 json对象 value可以是任意类型
console.log("键值对方式-----" + obj.address);//访问json对象
/*数组*/
var studnet = {studnet:[{name:"小明",age:23,score:99},{name:"小绿",age:22,score:98},{name:"小红",age:21,score:97}]}
console.log("数组方式------"+studnet.studnet[1].score);
/*js中evel() 将字符串转化为json对象*/
var obj1 = eval('({name:"小冷"})');
console.log("js中evel()方法将字符串转为为json对象-----"+obj1.name);
/*json对象解析*/
/*json2.js 工具函数将字符串转化为json对象*/
var str = '{"name":"小A","age":23}';//整体字符串
var obj2 = JSON.parse(str);//将字符串转化成JSON对象
console.log("json工具函数parse()函数将字符串转化为json对象-----"+obj2.name);
/*json2.js 工具函数将json对象转化为字符串 stringify()json格式字符串特殊的字符串格式*/
var obj3 = {name:"小黑",age:88,score:99};
var str1 = JSON.stringify(obj3);
console.log("json工具函数stringify()函数将json对象转化为json格式字符串-----"+str1);
</script>
</head>
<body>
</body>
</html>
四、Java解析JSON
在java程序中通常会用到JSON格式作为格式化数据传输,json-lib-2.3是一个转换数据的工具。下载地址是:http://sourceforge.net/projects/json-lib/files/ 。在其网站上可以下载源代码json-lib-2.3-jdk15-sources.jar包、json-lib-2.3-jdk15-javadoc.jar文档包、json-lib-2.3-jdk15.jar核心包。将其下载下来放入项目的classpath下。在使用json-lib-2.3包时还要其它的依赖包:如下图:
package com.iotek.json;
import com.iotek.entity.Student;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
/**
* @Author:
* @CreateTime: 2022-12-30 20:11
*/
public class JsonTest {
@Test
public void json1(){
JSONObject jsonObject = new JSONObject();
jsonObject.put("name","祖尔");
jsonObject.put("age",34);
jsonObject.put("address","上海");
System.out.println(jsonObject.toString());//将json转化为json格式的字符串
/*结果:{"name":"祖尔","age":34,"address":"上海"}*/
}
@Test
public void json2(){
/*数组方式*/
JSONArray jsonArray = new JSONArray();
jsonArray.add(new Student(1,"小黑1","男",23,99));
jsonArray.add(new Student(2,"小黑2","男",23,99));
jsonArray.add(new Student(3,"小黑3","男",23,99));
jsonArray.add(new Student(4,"小黑4","男",23,99));
System.out.println(jsonArray);
/*结果:[{"age":23,"id":1,"name":"小黑1","score":99,"sex":"男"},{"age":23,"id":2,"name":"小黑2","score":99,"sex":"男"},{"age":23,"id":3,"name":"小黑3","score":99,"sex":"男"},{"age":23,"id":4,"name":"小黑4","score":99,"sex":"男"}]*/
}
@Test
public void json3(){
Map<String,Student> map = new HashMap<>();
Student stu1 = new Student(1,"小黑1","男",23,99);
map.put("studnet",stu1);
JSONArray jsonArray = new JSONArray();
jsonArray.add(map);
System.out.println(jsonArray);
/*结果:[{"studnet":{"age":23,"id":1,"name":"小黑1","score":99,"sex":"男"}}]*/
}
}