JSON简介
JavaScript 对象表示法(JavaScript Object Notation),是轻量级的文本数据交换格式。其作用和xml有点类似,但是 比 XML 更小、更快,更易解析。JSON 解析器和 JSON 库支持许多不同的编程语言。
JSON 语法规则
JSON 对象在花括号中书写,对象可以包含多个名称/值对:如
var jsonObj = { "firstName":"John" , "lastName":"Doe" }
•数据在名称/值对中(如name:”tom”)
•数据由逗号分隔
•花括号保存对象
•方括号保存数组
这里介绍一下JSON 值可以是:
•数字(整数或浮点数)
•字符串(在双引号中),如
{ "firstName":"John" , "lastName":"Doe" }
•逻辑值(true 或 false)
•数组(在方括号中),如
var employees =
[{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }]
可以像这样访问 json对象数组中的第一项:employees[0].lastName;
可以这样修改数据:employees[1].firstName=”Tom”
•对象(在花括号中)
•null
javaScript与json对象的互相转换
json对象转成js对象:
json转js字符串:eval(‘(’ + jsonstr + ‘)’); //可以将json字符串转换成json对象(包括数组和字符串!!!),注意需要在json字符外包裹一对小括号;
另外,因为 JSON 使用 JavaScript 语法,所以json数组对象和js数组对象用法类似,都可以直接jsonArr[index]这样使用;
js对象转成json对象:
stringify(jsobj):将对象解析成json字符串!如果对象是js数组,解析成的也是json字符串而非数组(所以不能用数组下标方法了);
json在java中的应用
首先介绍一些json在java中的常用类和方法,所需的jar包如下图
常用类:JSONObject(json对象),JSONArray(json数组对象);
常用方法:
- JSONObject.fromObject(obj):将java对象转成json对象(返回JSONObject);
- JSONObject.toBean(obj, Student.class):将json对象转成指定类型的对象(返回的是Object对象,需要强制类型转换);
- JSONArray.fromObject(obj):将java数组对象转成json数组(返回JSONArray);
- array.getJSONObject(i):json数组获取下标为i的对象(返回JSONObject 对象);
- jsonArray.toArray():将json数组转换成相应java数组(返回Object[]);
jsonObj.put(name,value):JSONObject实例添加元素;
下面看具体的代码例子:
//json转成Object
String json = "{id:'1001',name:'张三',age:22}";
Student stu = null;
JSONObject obj = JSONObject.fromObject(json);
stu = (Student)JSONObject.toBean(obj, Student.class);
//从一个JSON数组得到一个java对象数组
String jsonStus = "[{id:1,name:'jack',age:20}, {id:2,name:'rose',age:20},
{id:3,name:'admin',age:20}]";
JSONArray array = JSONArray.fromObject(jsonStus);
Student[] stu = new Student[array.size()];
for(int i = 0; i < array.size(); i++){
JSONObject jsonObject = array.getJSONObject(i);
stu[i] = (Student)JSONObject.toBean(jsonObject, Student.class);
}
//java对象转换为json格式
JSONObject obj2=new JSONObject();
obj2.put("phone","123456");
obj2.put("zip","7890");
obj2.put("contact",obj2);
//一般数组转换成JSON
boolean[] boolArray = new boolean[]{true,false,true};
JSONArray jsonArray = JSONArray.fromObject( boolArray );
关于JSONObject对象的具体使用方法可以参考:http://www.cnblogs.com/hitwtx/articles/2468633.html