JSON进行数据传输Word文档下载推荐.docx
《JSON进行数据传输Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JSON进行数据传输Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。
this.sex=sex;
}
//创建一个实例
varp=newPerson(‘张三’,’男’);
//输出Person实例
alert(p.name);
注意:
通过该方式创建的对象是一般的脚本对象
2、从JavaScript1.2开始创建对象有了一种更快捷的语法(Json的语法),如下:
var
obj={name:
"
张三"
"
sex"
:
'
男'
};
alert(obj.sex);
关于数组
1、早期的JavaScript数组
vararr=newArray();
arr[0]=’a’;
arr[1]=’bbc’
我们也可以通过如下方式创建数组
vararr=newArray(‘a’,’bbc’);
2、使用JSON语法,则可以通过如下方式创建数组
vararr=[‘a’,’bbc’];
简单
示例
按照最简单的形式,可以用下面这样的
表示名称/值对:
{"
firstName"
Brett"
}
这个示例非常基本,而且实际上比等效的纯文本名称/值对占用更多的空间:
firstName=Brett
但是,当将多个名称/值对串在一起时,JSON
就会体现出它的价值了。
首先,可以创建包含多个名称/值对的记录,比如:
{"
"
"
lastName"
McLaughlin"
email"
brett@newI"
从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下
更容易使用,而且可读性更好。
例如,它明确地表示以上三个值都是同一记录的一部分;
花括号使这些值有了某种联系。
值的数组
当需要表示一组值时,JSON
不但能够提高可读性,而且可以减少复杂性。
例如,假设您希望表示一个人名列表。
在
中,需要许多开始标记和结束标记;
如果使用典型的名称/值对(就像在本系列前面文章中看到的那种名称/值对),那么必须建立一种专有的数据格式,或者将键名称修改为
person1-firstName
这样的形式。
如果使用
JSON,就只需将多个带花括号的记录分组在一起:
people"
[
{"
},
Jason"
Hunter"
jason@"
Elliotte"
Harold"
elharo@"
}
]}
这不难理解。
在这个示例中,只有一个名为
people
的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。
上面的示例演示如何用括号将记录组合成一个值。
当然,可以使用相同的语法表示多个值(每个值包含多个记录):
programmers"
],
authors"
Isaac"
Asimov"
genre"
sciencefiction"
Tad"
Williams"
fantasy"
Frank"
Peretti"
christianfiction"
musicians"
Eric"
Clapton"
instrument"
guitar"
Sergei"
Rachmaninoff"
piano"
]
这里最值得注意的是,能够表示多个值,每个值进而包含多个值。
但是还应该注意,在不同的主条目(programmers、authors
和musicians)之间,记录中实际的名称/值对可以不一样。
是完全动态的,允许在
结构的中间改变表示数据的方式。
甚至可以声明如下的Json对象
obj2={people:
{name:
张三'
sex:
男"
}}
alert(obj2.people.name);
在处理
格式的数据时,没有需要遵守的预定义的约束。
所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。
{deptid:
1'
deptname:
开发部'
deptnum:
2'
deptdesc:
开发相关'
emps:
[{empid:
1,empname:
’男’,age:
’20’},{empid:
2,empname:
’20’},{empid:
3,empname:
’20’}]}
三、在JavaScript中使用JSON
掌握了
格式之后,在
中使用它就很简单了。
是
原生格式,这意味着在
中处理
JSON数据不需要任何特殊的
API
或工具包。
将JSON
数据赋值给变量
例如,可以创建一个新的
变量,然后将
格式的数据字符串直接赋值给它:
varpeople=
这非常简单;
现在
包含前面看到的
格式的数据。
但是,这还不够,因为访问数据的方式似乎还不明显。
访问数据
尽管看起来不明显,但是上面的长字符串实际上只是一个数组;
将这个数组放进
变量之后,就可以很轻松地访问它。
实际上,只需用点号表示法来表示数组元素。
所以,要想访问
programmers
列表的第一个条目的姓氏,只需在
中使用下面这样的代码:
people.programmers[0].lastName;
注意,数组索引是从零开始的。
所以,这行代码首先访问
变量中的数据;
然后移动到称为
的条目,再移动到第一个记录([0]);
最后,访问
lastName
键的值。
结果是字符串值
“McLaughlin”。
下面是使用同一变量的几个示例。
people.authors[1].genre
//Valueis"
people.musicians[3].lastName
//Undefined.Thisreferstothefourthentry,andthereisn'
tone
people.programmers[2].firstName
利用这样的语法,可以处理任何
格式的数据,而不需要使用任何额外的
工具包或
API。
修改
数据
正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:
people.musicians[1].lastName="
Rachmaninov"
;
在将字符串转换为
JavaScriptjson格式对象之后,就可以像这样修改变量中的数据。
注意:
json格式的对象和json文本是不同的
varobj={name:
//json格式的对象
str="
}"
//json格式的字符串(json格式的文本)
转换回字符串
当然,如果不能轻松地将对象转换回本文提到的文本格式,那么所有数据修改都没有太大的价值。
中这种转换也很简单:
varnewJSONtext=people.toJSONString();
这样就行了!
现在就获得了一个可以在任何地方使用的文本字符串,例如,可以将它用作
Ajax
应用程序中的请求字符串。
更重要的是,可以将任何
对象转换为
文本。
并非只能处理原来用
字符串赋值的变量。
为了对名为
myObject
的对象进行转换,只需执行相同形式的命令:
scripttype="
text/javascript"
>
functionCar(make,model,year,color)
this.make=make;
this.model=model;
this.year=year;
this.color=color;
}
functionshowCar()
varcarr=newCar("
Dodge"
CoronetR/T"
1968,"
yellow"
);
alert(carr.toJSONString());
/script>
这就是
与其他数据格式之间最大的差异。
JSON,只需调用一个简单的函数,就可以获得经过格式化的数据,可以直接使用了。
对于其他数据格式,需要在原始数据和格式化数据之间进行转换。
即使使用
DocumentObjectModel
这样的
API(提供了将自己的数据结构转换为文本的函数),也需要学习这个
并使用
的对象,而不是使用原生的
对象和语法。
最终结论是,如果要处理大量
对象,那么
几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式(Ajax)。
四、JSON在Ajax中的应用
JSON(JavaScriptObjectNotation)一种简单的数据格式,比xml更轻巧。
数据不需要任何特殊的
通过以上学习我们知道JSON的规则很简单:
对象是一个无序的“‘名称/值’对”集合。
一个对象以“{”(左括号)开始,“}”(右括号)结束。
每个“名称”后跟一个“:
”(冒号);
“‘名称/值’对”之间使用“,”(逗号)分隔。
1、通过Json格式来声明对象和操作对象
案例:
代码
functionshowJSON()
{
varuser=
username"
andy"
age"
20,
info"
tel"
123456"
cellphone"
98765"
},
addresses"
[
city"
beijing"
postcode"
222333"
newyork"
555666"
]
alert(user.username);
alert(user.age);
alert(user.info.cellphone);
alert(user.address[0].city);
alert(user.address[0].postcode);
这表示一个user对象,拥有username,age,info,address
等属性。
同样也可以用JSON来简单的修改数据,修改上面的例子
functionshowJSON(){
20,
},
address"
user.username="
Tom"
2、一般对象转换成JSON格式的字符
JSON提供了json.js包,下载http:
//www.json.org/json.js
后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。
functionCar(make,model,year,color){
this.make
=
make;
this.model
model;
this.year
year;
this.color
color;
functionshowCar(){
1968,"
2、js对象和JSON格式的js对象、JSON格式的js对象和JSON文本的转换
可以使用eval来转换JSON字符到JSON格式的Object
functionmyEval(){
varstr='
name"
}'
varobj=eval('
('
+str+'
)'
alert(obj.toJSONString());
或者使用parseJSON()方法
functionmyparse()
varstr='
varobj=str.parseJSON();
//把其Json文本解析成为json对象
//把json对象转换成JSON
文本
3、从Java
类产生json对象(json-lib)
Jar包:
从Java
类产生json对象要使用json-libjar包
json的jar包
json-lib-2.2.2-jdk15.jar
json-lib的依赖包:
commons-logging.jar
common.lang.jar
commons-beanutils.jar
commons-collections-3.0.jar
ezmorph-0.9.2.jar
作用:
json-lib可以在服务器端把java对象转换成json对象、从json对象转化到Java对象,比如:
json-lib可以将java中的Array,Collections,Object,XML转化成json对象,反之也可以将json对象转化成java对象.
配置:
需要把json-lib-2.2.2-jdk15.jar以及依赖都要放到项目的lib库下
常用的JSONAPI:
(1)、JSONObject
//java对象或满足一定格式的字符串("
{username:
admin'
password:
12345'
..}"
)转化为JSONObject对象,用法:
JSONObjectjson=JSONObject.fromObject(userinfo);
//从json对象中根据键名取对应的值,username为键名
json.getObject("
//json对象到java对象的转化(jsonobject-->
po)
Userinfouserinfo=(Dept)JSONObject.toBean(jsonObject,Userinfo.class);
//Json对象转化成json文本字符串
StringjosStr=JSONObject.fromObject(userinfo).toString();
(2)、JSONArray
boolean[]boolArray={true,false};
Listlist=newArrayList();
Mapmap=newHashMap();
bject[]test={newUserinfo(),newUserinfo()};
//转化为java的数组Array为json对象
JSONArrayjsonArray=JSONArray.fromObject(boolArray);
//System.out.println(jsonArray.toString());
JSONArrayjsonArray1=JSONArray.fromObject("
['
'
3'
]"
//System.out.println(jsonArray1.toString());
list.add("
first"
second"
list.add(newUserinfo());
//转换java的List为json对象
JSONArrayjsonList=JSONArray.fromObject(list);
System.out.println(jsonList);
//转换java的Map为json对象
map.put("
windfree"