2018-8-15 seo達(dá)人
如果您想訂閱本博客內(nèi)容,每天自動發(fā)到您的郵箱中, 請點(diǎn)這里
一、首先看下什么是JSON
JSON:JavaScript Object Natation,JavaScript對象的表現(xiàn)形式,已經(jīng)發(fā)展成一種輕量級的數(shù)據(jù)交換格式。
JavaScript對象的表現(xiàn)形式,指定義JS對象的一種方式。
數(shù)據(jù)交換格式,即用于交換的數(shù)據(jù)格式。
JSON是種格式:
數(shù)據(jù)在鍵值對中, 數(shù)據(jù)由逗號分隔, 花括號保存對象, 方括號保存數(shù)組.
鍵值對組合中的名稱寫在前面,值對寫在后面,中間用冒號隔開
JSON 值可以是: 數(shù)字, 字符串, 邏輯值, 數(shù)組, 對象, null
JSON與XML相比,JSON更輕量級,XML更重量級,目前XML更多的用作配置文件。
二、再來看下什么是javascript對象
雖然有人說JavaScript 中的所有事物都是對象,但是 javascript 中,并不是所有的值都是對象,而有兩種值類型:原始值和對象。
(參考:http://blog.csdn.net/justjavac/article/details/8432989 JavaScript 并非所有的東西都是對象)
JavaScript原始值:
字符串,數(shù)字,布爾值,null,正則表達(dá)式
注:在 JavaScript 中所有的數(shù)字都是浮點(diǎn)數(shù)
JavaScript內(nèi)置對象:
Object(基礎(chǔ)對象),
Array(數(shù)組),
Function(函數(shù)構(gòu)造器),
Math(數(shù)學(xué)對象),
String(字符串對象),
Number(數(shù)值對象),
Boolean(布爾對象),
Date(日期時(shí)間),
Error(異常對象),
RegExp(正則表達(dá)式對象),
Arguments(函數(shù)參數(shù)集合)
(參考:http://www.cnblogs.com/lianzi/archive/2011/08/26/2154253.html javascript內(nèi)置對象列表及Array和String的常用方法)
其中 Boolean, Number, String 是原始值的包裝器,很少直接使用
JavaScript 創(chuàng)建對象的方法:
1)使用內(nèi)置對象
var person=new Object();//創(chuàng)建基礎(chǔ)對象實(shí)例,然后為其添加屬性
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
2)自定義對象構(gòu)造
function Person(firstname,lastname,age){//自定義對象構(gòu)造器,然后創(chuàng)建實(shí)例
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
}
var person=new Person("Bill","Gates",56);
//定義對象構(gòu)造器,可以使用“this”關(guān)鍵字構(gòu)造、也可以使用原型prototype構(gòu)造
(參考:http://www.jb51.net/article/20428.htm JavaScript 三種創(chuàng)建對象的方法)
3)使用直接量(literals 有直接量、字面量、常量等詞義)
var arr = [obj.a, 0, obj.a+1];
var obj = {name: 'John' + 'McCarthy'};
注:
準(zhǔn)確的說不叫直接量(literals),而叫初始器(Initialiser),可以在里面使用表達(dá)式
初始器有對象和數(shù)組兩種,所以有“對象直接量”,“數(shù)組直接量”這樣的說法
初始器基于JSON,要符合JSON語法格式,
因此有人說JSON是JavaScript的原生格式,
在JavaScript中處理JSON數(shù)據(jù)不需要任何特殊的API或者工具包
但是初始器里面是可以有表達(dá)式的,就像例子里的一樣
(參考:http://www.cnblogs.com/snandy/p/3439790.html JavaScript中的直接量與初始器的區(qū)別)
原始值只包括字符串,數(shù)字,布爾值,null,正則表達(dá)式,不包括 Undefined 和 Initialiser
三、JavaScript對象、JSON對象、JSON字符串
javascript對象:javascript中,除開JavaScript原始值(字符串,數(shù)字,布爾值,null,正則表達(dá)式)的都是javascript對象
JSON對象:JSON對象這種叫法不太準(zhǔn)確,可以理解為使用基于JSON的初始器定義的javascript對象
JSON字符串:符合JSON語法格式的字符串
javascript對象和JSON字符串相互轉(zhuǎn)換:
1:jQuery插件支持的轉(zhuǎn)換方式
$.parseJSON( jsonstr );$("xxx").serializeArray();
2:瀏覽器支持的轉(zhuǎn)換方式(Firefox,chrome,opera,safari,ie9,ie8)等瀏覽器
JSON.parse(jsonstr);JSON.stringify(jsonobj);
3:Javascript支持的轉(zhuǎn)換方式
eval('(' + jsonstr + ')');//不推薦
4:JSON官方的轉(zhuǎn)換方式
引入 json.js 或 json2.js,用法同第二種
(參考:http://www.cnblogs.com/luminji/p/3617160.html JS中對象與字符串的互相轉(zhuǎn)換)
JAVA對象和JSON字符串相互轉(zhuǎn)換:
可以用jackson、Gson和json-lib等
(參考:http://www.blogjava.net/bolo/archive/2014/04/16/412533.html 使用jackson對Java對象與JSON字符串相互轉(zhuǎn)換的一些總結(jié))
藍(lán)藍(lán)設(shè)計(jì)的小編 http://tweetduck.com