JSON:JavaScript 对象表示法(JavaScript Object Notation)。
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 语法是 JavaScript 对象表示法语法的子集。
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在方括号中)
对象(在花括号中)
null
JSON 对象在花括号中书写:
对象可以包含多个名称/值对:
{ "firstName":"John" , "lastName":"Doe" }
这一点也容易理解,与这条 JavaScript 语句等价:
firstName = "John"
lastName = "Doe"
JSON 数组在方括号中书写:
数组可包含多个对象:
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。
示例
下面是javaScript对象的例子:
var empObj={"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]}
取值:var name=employees[0].lastName;
赋值:employees[0].lastName="Lyc";
我们从服务器传来的数据经常是这样的:
var empStr="{'employees': [
{ 'firstName':'John' , 'lastName':'Doe' },
{ 'firstName':'Anna' , 'lastName':'Smith' },
{ 'firstName':'Peter' , 'lastName':'Jones' }
]}";
注意这是一个字符串,javaScript是不能解析的。
JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。
eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:
var empObj = eval ("(" + empStr + ")");
var empStr= empObj.toJSONString();
以下方式需要到js,或者有些浏览器不支持,或需要jar包,暂时不用。
目前的用法是,在JAVA拼接JSON格式的字符串,那么JS的解析就会方便很多。
问题:以前用junit调试时,页面提交过来的json貌似类似{"":""},有很多双引号,不能用啊。解决方法:1、有方法在json和string之间转换,2、手动解决3、有封装的方法直接取值。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
JSON和JS对象的转换:
1、用eval()函数(可以编译执行任何JavaScript程序,因此产生了安全性问题)
2、JSON解释器 JSON.parse、JSON.stringify(有些浏览器不支持)
3、引入脚本json2.js,JSON.parse 函数将JSON文本转换为对象。
JSON与JAVA的转换:
下载地址:http://json-lib.sourceforge.net/
还要需要的第3方包:
org.apache.commons(3.2以上版本)
org.apache.oro
net.sf.ezmorph(ezmorph-1.0.4.jar)
nu.xom
1、List
boolean[] boolArray = newboolean[]{true,false,true}; JSONArray jsonArray1 = JSONArray.fromObject( boolArray ); System.out.println( jsonArray1 ); // prints [true,false,true] List list = new ArrayList(); list.add( "first" ); list.add( "second" ); JSONArray jsonArray2 = JSONArray.fromObject( list ); System.out.println( jsonArray2 ); // prints ["first","second"] JSONArray jsonArray3 = JSONArray.fromObject( "['json','is','easy']" ); System.out.println( jsonArray3 ); // prints ["json","is","easy"]