什么是
JSON
JavaScript 对象表示法(JavaScript Object Notation)
是一种轻量级的数据交换格式,类似于XML,基于JavaScript的一个子集
JSON 比XML 更小、更快,更易解析
JSON 独立于语言和平台。JSON解析器和 JSON库支持许多不同的编程语言
这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
JSON的数据类型(格式)
json简单说就是javascript中的对象和数组,所以JSON就只有两种数据格式:
1. JSON Object
2.JSONArray
通过这两种结构可以表示各种复杂的结构
JSON对象
对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对
象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符
串、数组、对象几种。
比如一个json对象:var person={ “firstName”: “Brett”, “lastName”:“McLaughlin”,“email”: “aaaa” } 这个js变
量类似于OO语言表示一个Person类实例,该对象拥有firstName, lastName, email三个属性(成员变量)
JSON数组
数组在js中是中括号“[]”扩起来的内容,数据结构为 [“
java”,“javascript”,“vb”,...],取值方式和所有语言中一样,使
用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
比如:{ "people": [
{ "firstName":"Brett", "lastName":"McLaughlin","email": "aaaa" },
{ "firstName":"Jason", "lastName":"Hunter","email": "bbbb"},
{ "firstName":"Elliotte","lastName":"Harold","email": "cccc" }
]}
经过对象、数组2种结构就可以组合成复杂的数据结构了
用JavaScript操作JSON
JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。
赋值给变量:可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:
访问JSON
只需用点号表示法来访问元素。所以,要想访问 programmers列表的第一个条目的姓氏,只需在 JavaScript中使用下面这样的代
码:people.programmers[1].lastName;
动到第2个记录([1]);最后,访问 lastName键的值。
varpeople = {"pName":"zs","programmers":
[
{"firstName":"ren","lastName":"jinghua"},
{"firstName":"liu","lastName":"dong"},
{"firstName":"ke","lastName":"zhang"}
]
}
修改数据
正如可以用点号和方括号访问数据,也可以按照同样的方式轻松地修改数据:
JSON对象转为字符串
如果不能将对象转换回本文提到的文本格式,那么所有
数据修改都没有太大的价值。在 JavaScript 中这种转换也很简单:
var newJSONtext = people.toJSONString();
这样就行了!现在就获得了一个可以在任何地方使用的
文本字符串,例如,可以将它用作 Ajax 应用程序中的请求字符串
字符串转变为JSON格式
Json格式的字符串可以通过使用eval()函数转变为一个json对象,用于读取或修改数据
JSON在Ajax中的应用
配合使用客户端的JSON JavaScript脚本和服务器端的JSON Java实现,我们可以在服务端将Java对象转换为JSON串发送到客户端,
从而简化数据的解析处理
通过导入json-lib-2.3-jdk15.jar实现在Java中使用JSON
这个框架里有两个核心对象
net.sf.json.JSONObject—对应单个JSON对象
net.sf.json.JSONArray—对应JSON数组
Servlet+JQUERY+JSON实现Ajax
把json-lib-2.3-jdk15.jar拷入到web项目下web-inf中的lib包中
在服务器端(servlet)中将封装数据的对象通过JSON API转为JSON相关对象
如果是单个对象,则转换为JSONObject, 如果是多个(数组,集合),则转换为JSONArray
同样通过response将相应对象发送到客户端
在客户端使用JQuery解析json对象或数组,完成局部刷新(jquery ajax函数中的dataType要设置为json类型)
Struts2整合JSON
在struts2中要使用Json需要在项目中加入相应的json插件struts2-json-plugin-2.3.4.1.jar
该插件本质上就是一些拦截器和struts2配置文件
它提供了一个json的返回结果类型(Result Type),只要为Action指定返回结果类型为json,那么这个响应结果就不需要返回给任何视
图层,JSON相关拦截器会将Action里的信息自动转换为JSON指定格式的数据,并将该数据返回给JAVASCRIPT,这样可以完成AJAX的应用
交互.
Struts应用JSON处理Ajax步骤
从struts2 安装文件包里把struts2-json-plugin-2.3.4.1.jar拷贝到项目的web-inf目录中的lib目录下
struts.xml中package 中extends=“json-default” 比如:
<package name="json"namespace="/json" extends="json-default">
在需要返回json的action定义中,result type=json。
避免使用get开头的action业务方法。因为JSON插件会把所有包含getter方法的属性都序列化到返回结果中
不需要加入转换json数据格式的代码,Json插件会根据该action属性的getter自动转换,在Ajax回调函数中会取得当前Action中所
有暴露出来属性的值