1、this.sex=sex;/创建一个实例var p=new Person(张三,男);/输出Person实例alert(p.name);注意:通过该方式创建的对象是一般的脚本对象2、从JavaScript1.2开始创建对象有了一种更快捷的语法(Json的语法),如下:varobj=name:张三,sex:男;alert(obj.sex);关于数组1、早期的JavaScript数组var arr=new Array();arr0=a;arr1=bbc我们也可以通过如下方式创建数组var arr=new Array(a,bbc);2、使用JSON语法,则可以通过如下方式创建数组var arr=a,
2、bbc;简单示例按照最简单的形式,可以用下面这样的表示名称/值对: firstNameBrett 这个示例非常基本,而且实际上比等效的纯文本名称/值对占用更多的空间:firstName=Brett但是,当将多个名称/值对串在一起时,JSON就会体现出它的价值了。首先,可以创建包含多个名称/值对的记录,比如: , lastNameMcLaughlinemailbrettnewI从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。值的数组当需要表示一组值时,JSON不但能够提高
3、可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在中,需要许多开始标记和结束标记;如果使用典型的名称/值对(就像在本系列前面文章中看到的那种名称/值对),那么必须建立一种专有的数据格式,或者将键名称修改为person1-firstName这样的形式。如果使用JSON,就只需将多个带花括号的记录分组在一起:people ,JasonHunterjasonElliotteHaroldelharo 这不难理解。在这个示例中,只有一个名为people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以
4、使用相同的语法表示多个值(每个值包含多个记录):programmers ,authorsIsaacAsimovgenrescience fictionTadWilliamsfantasyFrankPerettichristian fictionmusiciansEricClaptoninstrumentguitarSergeiRachmaninoffpiano 这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors和musicians)之间,记录中实际的名称/值对可以不一样。是完全动态的,允许在结构的中间改变表示数据的方
5、式。甚至可以声明如下的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掌握了格式之后,在中使用它就很简单了。是原生格式,这意味着在中处理JSO
6、N数据不需要任何特殊的API或工具包。将JSON数据赋值给变量例如,可以创建一个新的变量,然后将格式的数据字符串直接赋值给它:var people =这非常简单;现在包含前面看到的格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。访问数据尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问programmers列表的第一个条目的姓氏,只需在中使用下面这样的代码:people.programmers0.lastName;注意,数组索引是从零开始的。所以,这行代码首先访问变量中的数据;
7、然后移动到称为的条目,再移动到第一个记录(0);最后,访问lastName键的值。结果是字符串值“McLaughlin”。下面是使用同一变量的几个示例。people.authors1.genre / Value is people.musicians3.lastName / Undefined. This refers to the fourth entry,and there isnt onepeople.programmers2.firstName利用这样的语法,可以处理任何格式的数据,而不需要使用任何额外的工具包或API。修改数据正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修
8、改数据:people.musicians1.lastName = Rachmaninov;在将字符串转换为JavaScript json格式对象之后,就可以像这样修改变量中的数据。注意:json格式的对象和json文本是不同的var obj=name:/json格式的对象str=/json格式的字符串(json格式的文本)转换回字符串当然,如果不能轻松地将对象转换回本文提到的文本格式,那么所有数据修改都没有太大的价值。中这种转换也很简单:var newJSONtext = people.toJSONString();这样就行了!现在就获得了一个可以在任何地方使用的文本字符串,例如,可以将它用作
9、Ajax应用程序中的请求字符串。更重要的是,可以将任何对象转换为文本。并非只能处理原来用字符串赋值的变量。为了对名为myObject的对象进行转换,只需执行相同形式的命令:script type=text/javascriptfunction Car(make,model,year,color)this.make=make;this.model=model;this.year=year;this.color=color;function showCar()var carr = new Car(DodgeCoronet R/T,1968,yellow);alert(carr.toJSONStri
10、ng();/script这就是与其他数据格式之间最大的差异。JSON,只需调用一个简单的函数,就可以获得经过格式化的数据,可以直接使用了。对于其他数据格式,需要在原始数据和格式化数据之间进行转换。即使使用Document Object Model这样的API(提供了将自己的数据结构转换为文本的函数),也需要学习这个并使用的对象,而不是使用原生的对象和语法。最终结论是,如果要处理大量对象,那么几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式(Ajax)。四、JSON在Ajax中的应用JSON(JavaScript Object Notation)一种简单的数
11、据格式,比xml更轻巧。数据不需要任何特殊的通过以上学习我们知道JSON的规则很简单:对象是一个无序的“名称/值对”集合。一个对象以“”(左括号)开始,“”(右括号)结束。每个“名称”后跟一个“:”(冒号);“名称/值对”之间使用“,”(逗号)分隔。1、通过Json格式来声明对象和操作对象案例:代码function showJSON()var user =usernameandyage20,infotel123456cellphone98765,addressescitybeijingpostcode222333newyork555666alert(user.username);alert(u
12、ser.age);alert(user.info.cellphone);alert(user.address0.city);alert(user.address0.postcode);这表示一个user对象,拥有username, age, info, address等属性。同样也可以用JSON来简单的修改数据,修改上面的例子function showJSON() ,20,addressuser.username = Tom2、一般对象转换成JSON格式的字符JSON提供了json.js包,下载http:/www.json.org/json.js后,将其引入然后就可以简单的使用object.t
13、oJSONString()转换成JSON数据。function Car(make, model, year, color) this.make=make;this.modelmodel;this.yearyear;this.colorcolor;function showCar() , 1968, 2、js对象和JSON格式的js对象、JSON格式的js对象和JSON文本的转换可以使用eval来转换JSON字符到JSON格式的Objectfunction myEval() var str = name var obj = eval( + str + )alert(obj.toJSONStrin
14、g();或者使用parseJSON()方法function myparse()var str= var obj=str.parseJSON();/把其Json文本解析成为json对象 /把json对象转换成JSON文本3、从Java类产生json对象(json-lib)Jar包:从Java类产生json对象要使用json-lib jar包json的jar包json-lib-2.2.2-jdk15.jarjson-lib的依赖包:commons-logging.jarcommon.lang.jarcommons-beanutils.jarcommons-collections-3.0.jarez
15、morph-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库下常用的JSON API:(1)、JSONObject/java对象或满足一定格式的字符串(username:admin,password:12345,.)转化为JSONObject对象,用法:JSONObject
16、json=JSONObject.fromObject(userinfo);/从json对象中根据键名取对应的值, username为键名json.getObject(/json对象到java对象的转化(jsonobject-po)Userinfo userinfo=(Dept)JSONObject.toBean(jsonObject,Userinfo.class);/Json对象转化成json文本字符串String josStr=JSONObject.fromObject(userinfo).toString();(2)、JSONArrayboolean boolArray=true,fals
17、e;List list = new ArrayList();Map map=new HashMap();bject test=new Userinfo(),new Userinfo();/转化为java的数组Array为json对象JSONArray jsonArray = JSONArray.fromObject(boolArray);/System.out.println(jsonArray.toString();JSONArray jsonArray1=JSONArray.fromObject(,3/System.out.println(jsonArray1.toString();list.add(firstsecondlist.add(new Userinfo();/转换java的List为json对象JSONArray jsonList = JSONArray.fromObject(list);System.out.println(jsonList);/转换java的Map为json对象map.put(windfree
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1