1. 程式人生 > >JavaScript物件與JSON字串的相互轉換

JavaScript物件與JSON字串的相互轉換

JSON(JavaScript Object Notation) 是JavaScript程式語言的一個子集。正因JSON是JavaScript的一個子集,所以它可清晰的運用於此語言中。

eval函式 JSON文字轉換為物件

    為了將JSON文字轉換為物件,可以使用eval函式。eval函式呼叫JavaScript編輯器。由於JSON是JavaScript的子集,因此編譯器將正確的解析文字併產生物件結構。文字必須括在括號中避免產生JavaScript的語法歧義。
var obj = eval('(' + JSONTest + ')');
    eval函式非常快速。它可以編譯執行任何JavaScript程式,因此產生了安全性問題。當使用可信任與完善的原始碼時才可以使用eval函式。這樣可以更安全的解析JSON文字。使用XmlHttp的web應用,頁面之間的通訊只允許同源,因此是可以信任的。但這卻不是完善的。如果伺服器沒有嚴謹的JSON編碼,或者沒有嚴格的輸入驗證,那麼可能傳送包括危險指令碼的無效JSON文字。eval函式將執行惡意的指令碼。

JSON直譯器 JSON.parse、JSON.stringify

    使用JSON解析器可以防止像eval函式轉換JSON文字為物件那樣的安全隱患。JSON解析器只能辨識JSON文字,拒絕所有指令碼。提供了本地JSON支援的瀏覽器的JSON解析器將遠快於eval函式。
目前,Firefox、Opera、IE8以上版本也提供了本地JSON支援。其中,JSON直譯器提供的函式有:JSON.parse、JSON.stringify。
將JSON文字轉換為物件。
JSON.parse(text[, reviver])
引數
text
   必選項。要轉換為物件的JSON文字。
reviver
   可選項。該引數是個替換函式。在轉換中,遍歷的每個節點,都將執行該函式,該函式的返回值將替代轉換結果的相應節點值。
JSON.stringify 函式
將物件轉換為JSON文字。
JSON.stringify(value[, replacer[, space]])
引數
text
必選項。要轉換為JSON文字的物件。
reviver
   可選項。該引數是個替換函式。在轉換中,遍歷的每個節點,都將執行該函式,該函式的返回值將替代轉換結果的相應節點值。
space
   可選項。格式化輸出JSON文字縮排的空格數量。如果不提供該引數將不會格式化輸出。
引數reviver的委託型別
reviver(key, value)
reviver函式的中的this是當前所遍歷到的節點的父節點。當所遍歷的是根節點的時候,父節點是個Object物件,根節點是該物件的一個屬性,屬性名是空字串。
引數
key
   當父節點是陣列Object,key為陣列索引,否則key為Object屬性名。
value
   節點值。
注:JSON不支援迴圈資料結構。

JSON.parse 函式

JSON.parse、JSON.stringify使用示例<script type="text/javascript">
function InventoryItem(parm) {
   this.Product = parm.Product
   this.Quantity = parm.Quantity;
   this.Price = parm.Price;
   this.Type = parm.Type;
   this.Total = function() {
      return this.Price * this.Quantity;
   }
}

function Inventory(parm) {
   this.Date = parm.Date;
   this.Item = parm.Item;
   this.Type = parm.Type;
   this.Total = function() {
      var count = 0;
      for (var key in this.Item) {
         count += this.Item[key].Total();
      }
      return count;
   }
}

var inventoryJSONText = "{\"Date\":\"2000-01-01\",\"Item\":[{\"Product\":\"ProductOne\",\"Quantity\":\"10\",\"Price\":\"10\",\"Type\":\"InventoryItem\"},{\"Product\":\"ProductTwo\",\"Quantity\":\"100\",\"Price\":\"20\",\"Type\":\"InventoryItem\"}],\"Type\":\"Inventory\"}";

//將JSON文字轉換為物件,並將一般類的例項改成偽類的例項。
var inventoryObject = JSON.parse(inventoryJSONText, function(key, value) {
   var type;
   if (value && typeof value === 'object') {
      type = value.Type;
      if (typeof type === 'string' && typeof window[type] === 'function') {
         return new (window[type])(value);
      }
   }
   return value;
});

//輸出轉換後物件的資訊。
var output = "Product\t\tQuantity\tPrice\tTotal\n";
for (var key in inventoryObject.Item) {
   var item = inventoryObject.Item[key];
   output += item.Product + "\t" + item.Quantity + "\t\t" + item.Price + "\t" + item.Total() + "\n";
}
output += "\t\t\t\t\t" + inventoryObject.Total();
alert(output);

//再將inventoryObject物件轉換成JSON文字。
var inventoryJSONTextAgain = JSON.stringify(inventoryObject, null, 3);
alert(inventoryJSONTextAgain);
</script>

來自:http://blog.163.com/[email protected]/blog/static/171747707201110835533963/

相關推薦

JSON物件JSON字串相互轉換

<!DOCTYPE html> <html> <head> <title>JSON測試 </title> <meta http-equiv="Content-Type" content="text/

JavaScript物件JSON字串相互轉換

JSON(JavaScript Object Notation) 是JavaScript程式語言的一個子集。正因JSON是JavaScript的一個子集,所以它可清晰的運用於此語言中。 eval函式 JSON文字轉換為物件     為了將JSON文字轉換為物件,可以使

C 物件JSON字串互相轉換的幾種方式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java 物件json字串互相轉換工具類

                需要引入的jar包: JsonUtil.java檔案: package

前端頁面Json物件Json字串相互轉換

一:Json物件轉換為json字串 第一種:使用最原始的for迴圈自己拼裝組合,這個我就不寫例子了 第二種:使用瀏覽器自帶的JSON物件,缺點是相容性不好,對於ie8以下的版本不支援。 1 2 3 var userinf

JSON物件JSON字串之間的轉換

JavaScript中:         JSON物件轉JSON字串(推薦) [html]  view plain  copy

Json物件Json字串的轉化、JSON字串Java物件轉換

1.jQuery外掛支援的轉換方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字串轉換成json物件 2.瀏覽器支援的轉換方式(Firefox,chrome,opera,safari

js中處理json Json物件Json字串的轉化、JSON字串Java物件轉換

轉:https://www.cnblogs.com/zq-boke/p/5833387.html Json物件與Json字串的轉化、JSON字串與Java物件的轉換   一.Json物件與Json字串的轉化 1.jQuery外掛支援的轉換方式:   $.pars

Json物件Json字串互轉(4種轉換方式)

1.jQuery外掛支援的轉換方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字串轉換成json物件 2.瀏覽器支援的轉換方式(Firefox,chrome,opera,s

探索java安卓中json物件json字串之間的關係

  前段時間一直在跟json資料打交道,從一開始的什麼都不懂,到現在整合了許多知識的懵懂,還是收穫了不少對於json格式資料新的看法和安卓資料傳輸的理解。   首先,json資料的格式是什麼樣的呢?我們來定義一個字串型別的json資料。  String json

Json物件Json字串的轉化

1.jQuery外掛支援的轉換方式:   $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字串轉換成json物件   2.瀏覽器支援的轉換方式(Firefox,chrome,opera,safari,ie9,ie8)等瀏覽器

C/C++中ASCIIUnicode字串相互轉換

轉載地址:https://blog.csdn.net/wbq2018/article/details/8806431 1、ASCII to Unicode 函式: wcstombs(VC6)、wcstombs_s 例項: //crt_wcstombs_s.c //This examp

XMLHttpRequest() 請求 返回結果JSON 物件JSON 字串處理

好久沒有看JavaWEB專案了突然拿起來,而且是原生的專案,中JSON 字串的處理   json.stingfy() 將物件,陣列轉換為字串,json.parse() 將字串轉成json 物件  JSON.stringify(陣列或者物件)  JSON.parse(字串)

springmvc之Jackson實現po物件Json字串的互轉

因為springmvc支援json格式資料轉化使用的是jackson的包,所以今天研究了使用jackson包封裝實現po物件魚json字串的互轉,當然大家也可以使用阿里巴巴的開源包fastjson包 一、準備 如果你需要使用jackson,你必須得匯入相應的

gson小試牛刀——複雜物件JSON字串相互轉化

好久沒有寫過Java的程式碼了,之所以寫這個題目,是因為同事的遇到的一個疑問,半小時內恢復功力,將其解決掉。 這裡所說的複雜物件是那種屬性是另外一個型別的類。 下面的例子使用gson,將java物件

使用Gson將類和json字串相互轉換

1、從實體類到JSON字串       Gson gson = new Gson();       String jsonBDID = gson.toJson(bdPushID); 2、從JSON字串

java物件json字串互轉

場景:java物件與json字串互轉換 1.本例使用com.alibaba.fastjson.JSON類 2.實體物件轉換為json字串 public static String toJSONString(Object city) { String jsonStr = ""; if (c

json工具類:objectjson相互轉換, listjson的相互轉換

         json工具類:object與json的相互轉換,  listjson的相互轉換   t新增pom.xml的依賴 <dependency>       &

PHP圖片base64字串相互轉換函式

/** * base64字串轉換成圖片 * @param string $base64_string base64字串 * @param unknown $path 圖片儲存路徑 * @param string $prefix 圖片字首 * @return boolean */ function

將圖片(二進位制檔案)儲存於資料庫,論檔案位元組流二進位制字串相互轉換

開發中遇到儲存圖片檔案於資料庫這樣的需求。我們知道檔案本身就是一份二進位制資料,不同型別的檔案只是編碼形式不同,對應的解讀形式不同,無論txt檔案、jpg檔案亦或是mp4檔案,本質上都是0和1組成的。而在C++中我們可以通過位元組流來讀寫檔案,也就是說我們可以把檔案讀入cha