JSON

JSON:JavaScript 对象表示法(JavaScript Object Notation)。

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。


JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

  • 数据在名称/值对中

  • 数据由逗号分隔

  • 花括号保存对象

  • 方括号保存数组

JSON 值

JSON 值可以是:

  • 数字(整数或浮点数)

  • 字符串(在双引号中)

  • 逻辑值(true 或 false)

  • 数组(在方括号中)

  • 对象(在花括号中)

  • null

JSON 对象

JSON 对象在花括号中书写:

对象可以包含多个名称/值对:

{ "firstName":"John" , "lastName":"Doe" }

这一点也容易理解,与这条 JavaScript 语句等价:

firstName = "John"
lastName = "Doe"

JSON 数组

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"]



你可能感兴趣的:(JSON)