您的位置:首页 > Web前端 > JavaScript

JS中的json数据详解

2012-02-29 22:55 246 查看
概述:一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。

一、JSON的规则

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。

规则如下:

1)映射用冒号(“:”)表示。名称:值

2)并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2

3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2}

4) 并列数据的集合(数组)用方括号(“[]”)表示。

[

{名称1:值,名称2:值2},

{名称1:值,名称2:值2}

]

5 元素值可具有的类型:string, number, object, array, true, false, null

二、解析JSON

为了读取存储在 responseText 属性中的 JSON 数据,需要根据 JavaScript 的 eval 语句。函数 eval 会把一个字符串当作它的参数。然后这个字符串会被当作 JavaScript 代码来执行。因为 JSON 的字符串就是由 JavaScript 代码构成的,所以它本身是可执行的

三、在java后来使用json工具类来与json数据互相转换交互

a) 首先导入用到json工具类的jar包

json 需要那些类库进行支持

json-lib-**-jdk**.jar json的核心包

其他jar包

exmorph - ***.jar

morph-***.jar

morph-sandbox-**.jar

这三个包都是完成bean与bean之间的复制的包

使用apache的jar

commons-beanutils--**.jar 复制

commons-collections-***.jar对java.util的增强

commons-lang-***.jar对java.lang的增强

commons-logging-***日志包

b) 将java对象转换成JSON字符串

/*将java对象转换成JSON字符串*/
Teacher teacher=new Teacher();
teacher.setName("marico");
teacher.setSex("男");
teacher.setAge(28);
teacher.setBirth(new Date());
List<Student> list=new ArrayList<Student>();
for(int i=0;i<3;i++){
Student stu=new Student();
stu.setName("marico");
list.add(stu);
}
teacher.setStudents(list);
//需要引入类库
//转换方法
System.out.println(JSONObject.fromObject(teacher).toString());


c) 讲java中的集合转换成JSON字符串

List<Teacher> teas=new ArrayList<Teacher>();
for(int i=0;i<3;i++){
Teacher teacher=new Teacher();
teacher.setName("marico"+i);
teacher.setSex("男");
teacher.setAge(28);
teacher.setBirth(new Date());
teas.add(teacher);
}
System.out.println(JSONArray.fromObject(teas).toString());


d) 将json字符串转换成java对象

//第一步定义出字符串

teaObj="{\"age\":28,\"birth\":{\"date\":28,\"day\":2,\"hours\":9,\"minutes\":20,\"month\":1,\"seconds\":25,\"time\":1330392025906,\"timezoneOffset\":-480,\"year\":112},\"name\":\"marico\",\"sex\":\"男\"}";
//第二步:使用JsonObject.fromObject方法将其字符串转换成一个JsonObject对象
JSONObject jsonObj = JSONObject.fromObject(teaObj);
//第三步:调用JsonObject的 toBean的方法 将其转换成一个 Object对象
Teacher teac = (Teacher) JSONObject.toBean(jsonObj,Teacher.class);
System.out.println(teac.toString());


e) 讲json数组的字符串转换成java的集合对象

//第一步:声明出字符串
String teaArr = "[{\"age\":28,\"birth\":{\"date\":28,\"day\":2,\"hours\":9,\"minutes\":28,\"month\":1,\"seconds\":44,\"time\":1330392524093,\"timezoneOffset\":-480,\"year\":112},\"name\":\"陈红军\",\"sex\":\"男\"},{\"age\":28,\"birth\":{\"date\":28,\"day\":2,\"hours\":9,\"minutes\":28,\"month\":1,\"seconds\":44,\"time\":1330392524093,\"timezoneOffset\":-480,\"year\":112},\"name\":\"marico\",\"sex\":\"男\"},{\"age\":28,\"birth\":{\"date\":28,\"day\":2,\"hours\":9,\"minutes\":28,\"month\":1,\"seconds\":44,\"time\":1330392524093,\"timezoneOffset\":-480,\"year\":112},\"name\":\"marico\",\"sex\":\"男\"}]";
//第二步:调用JsonArray.fromObject方法将其字符串转换成一个JsonArray对象
JSONArray jsonArra = JSONArray.fromObject(teaArr);
//第三步:调用 toCollection 将其转换成 指定泛型的List集合对象
List<Teacher> teas = (List<Teacher>) JSONArray.toCollection(jsonArra, Teacher.class);
for(Teacher tea:teas){
System.out.println(tea.toString());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: