JavaScript對象、JSON對象、JSON字符串的區(qū)別

2018-8-15    seo達人

如果您想訂閱本博客內容,每天自動發(fā)到您的郵箱中, 請點這里

JavaScript對象、JSON對象、JSON字符串的區(qū)別

一、首先看下什么是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,正則表達式
注:在 JavaScript 中所有的數(shù)字都是浮點數(shù)

JavaScript內置對象:
Object(基礎對象),
Array(數(shù)組),
Function(函數(shù)構造器),
Math(數(shù)學對象),
String(字符串對象),
Number(數(shù)值對象),
Boolean(布爾對象),
Date(日期時間),
Error(異常對象),
RegExp(正則表達式對象),
Arguments(函數(shù)參數(shù)集合)
(參考:http://www.cnblogs.com/lianzi/archive/2011/08/26/2154253.html javascript內置對象列表及Array和String的常用方法)

其中 Boolean, Number, String 是原始值的包裝器,很少直接使用

JavaScript 創(chuàng)建對象的方法:
1)使用內置對象
var person=new Object();//創(chuàng)建基礎對象實例,然后為其添加屬性
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
2)自定義對象構造
function Person(firstname,lastname,age){//自定義對象構造器,然后創(chuàng)建實例
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
}
var person=new Person("Bill","Gates",56);
//定義對象構造器,可以使用“this”關鍵字構造、也可以使用原型prototype構造
(參考: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'};

注:
準確的說不叫直接量(literals),而叫初始器(Initialiser),可以在里面使用表達式
初始器有對象和數(shù)組兩種,所以有“對象直接量”,“數(shù)組直接量”這樣的說法

初始器基于JSON,要符合JSON語法格式,
因此有人說JSON是JavaScript的原生格式,
在JavaScript中處理JSON數(shù)據(jù)不需要任何特殊的API或者工具包

但是初始器里面是可以有表達式的,就像例子里的一樣
(參考:http://www.cnblogs.com/snandy/p/3439790.html JavaScript中的直接量與初始器的區(qū)別)

原始值只包括字符串,數(shù)字,布爾值,null,正則表達式,不包括 Undefined 和 Initialiser

 

三、JavaScript對象、JSON對象、JSON字符串

javascript對象:javascript中,除開JavaScript原始值(字符串,數(shù)字,布爾值,null,正則表達式)的都是javascript對象

JSON對象:JSON對象這種叫法不太準確,可以理解為使用基于JSON的初始器定義的javascript對象

JSON字符串:符合JSON語法格式的字符串

 

 

javascript對象和JSON字符串相互轉換:
1:jQuery插件支持的轉換方式
$.parseJSON( jsonstr );$("xxx").serializeArray();
2:瀏覽器支持的轉換方式(Firefox,chrome,opera,safari,ie9,ie8)等瀏覽器
JSON.parse(jsonstr);JSON.stringify(jsonobj);
3:Javascript支持的轉換方式
eval('(' + jsonstr + ')');//不推薦
4:JSON官方的轉換方式
引入 json.js 或 json2.js,用法同第二種
(參考:http://www.cnblogs.com/luminji/p/3617160.html JS中對象與字符串的互相轉換)

 

JAVA對象和JSON字符串相互轉換:
可以用jackson、Gson和json-lib等
(參考:http://www.blogjava.net/bolo/archive/2014/04/16/412533.html 使用jackson對Java對象與JSON字符串相互轉換的一些總結)

藍藍設計sillybuy.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業(yè)提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網(wǎng)站建設 、平面設計服務



分享本文至:

日歷

鏈接

個人資料

藍藍設計的小編 http://sillybuy.com

存檔