而不是從一個json字符串和使用$ .parseJSON,我需要把我的對象,並將其存儲在一個變量作爲字符串表示json。jquery json to string?
(我處理庫需要一個畸形的JSON類型,因此我需要更動它來得到它的工作。)
什麼是做到這一點的最好方法是什麼?
而不是從一個json字符串和使用$ .parseJSON,我需要把我的對象,並將其存儲在一個變量作爲字符串表示json。jquery json to string?
(我處理庫需要一個畸形的JSON類型,因此我需要更動它來得到它的工作。)
什麼是做到這一點的最好方法是什麼?
編輯:您應該使用Douglas Crockford的json2.js庫,而不是實現下面的代碼。它提供了一些額外的功能和更好的/舊的瀏覽器支持。
抓住json2.js文件來自:https://github.com/douglascrockford/JSON-js
// implement JSON.stringify serialization
JSON.stringify = JSON.stringify || function (obj) {
var t = typeof (obj);
if (t != "object" || obj === null) {
// simple data type
if (t == "string") obj = '"'+obj+'"';
return String(obj);
}
else {
// recurse array or object
var n, v, json = [], arr = (obj && obj.constructor == Array);
for (n in obj) {
v = obj[n]; t = typeof(v);
if (t == "string") v = '"'+v+'"';
else if (t == "object" && v !== null) v = JSON.stringify(v);
json.push((arr ? "" : '"' + n + '":') + String(v));
}
return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
}
};
var tmp = {one: 1, two: "2"};
JSON.stringify(tmp); // '{"one":1,"two":"2"}'
代碼來自:http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/
我會推薦[json2.js](http://www.json.org/json2.js)庫來代替這個函數,因爲它不能正確處理某些類型,比如包含'undefined',函數的屬性, (它們不是有效的JSON值),布爾對象(例如'new Boolean(true);')或'NaN'應該被替換爲'null'等等,也不支持額外的可選項參數,縮進的'replacer'函數和'spaces'編號,這些標準中[詳細描述](http://ecma262-5.com/ELS5_HTML.htm#Section_15.12.3)。 – CMS 2010-08-29 01:29:33
我想也許應該是json2鏈接:https://github.com/douglascrockford/JSON-js/blob/master/json2.js – fisherwebdev 2011-10-28 22:43:10
現在大多數瀏覽器都有一個原生的JSON對象,其中包括解析和stringify方法。因此,只需嘗試'JSON.stringify({})'並查看是否獲得'「{}」'而無需包含上述代碼。你甚至可以傳入參數來過濾掉鍵或做漂亮的打印,例如'JSON.stringify({a:1,b:2},null,2)'在每個鍵的前面放置一個換行符和2個空格。 – AlexChaffee 2012-04-03 15:49:28
您可以將JSON解析爲一個對象,然後從ajavscript對象中創建格式不正確的JSON。這可能不是最好的表現,tho。否則,如果您只需要對字符串進行非常小的更改,只需將其作爲字符串處理,然後使用標準JavaScript對其進行修改即可。
我用
$.param(jsonObj)
這讓我的字符串。
但是這不會創建JSON(那是問題)。 – 2011-02-23 17:11:21
但這個小代碼正在做問題請求的所有標題:P – 2011-08-18 09:08:37
我發現,最好的方法是使用jQuery JSON
爲什麼這不是一個好的答案? – VDP 2011-10-13 11:35:11
,因爲它是一個jQuery的_plugin_&而不是什麼直接提供的jquery – 2012-09-22 07:47:55
@ user01但jquery不包括這樣做的方式(至少它不是當我寫這個回覆,不知道現在是否如此) – 2013-04-17 11:17:40
大多數瀏覽器有一個原生JSON
對象,這些天,其中包括parse
和stringify
方法。所以試試JSON.stringify({})
看看你是否得到"{}"
。你甚至可以傳入參數來過濾掉鍵或做漂亮的打印,例如JSON.stringify({a:1,b:2}, null, 2)
在每個鍵的前面放置一個換行符和2個空格。
JSON.stringify({a:1,b:2}, null, 2)
給
"{\n \"a\": 1,\n \"b\": 2\n}"
它打印爲
{
"a": 1,
"b": 2
}
對於亂搞你的問題的一部分,使用第二個參數。從http://www.javascriptkit.com/jsref/json.shtml:
的代用品參數可以是一個功能或 字符串/數字的陣列。它逐步遍歷JSON對象中的每個成員到 ,讓您決定每個成員應該更改的值。作爲 函數,它可以返回:
- 數字,字符串或布爾值,它用返回值替換屬性的原始值。
- 一個對象,它被序列化然後返回。對象方法或函數不被允許,而是被刪除。
- 空,導致屬性被刪除。
作爲陣列,在其內部定義的值對應於當轉換成JSON對象 應當保留的 JSON對象內的屬性的名稱。 [序列化到JSON jQuery中]的
可能重複(http://stackoverflow.com/questions/191881/serializing-to-json-in-jquery) – Wolph 2010-08-29 00:30:20
哪個庫需要一個畸形的JSON字符串? :/ – 2010-08-29 02:00:27
斯坦福JavaScript加密庫輸出並解析格式不正確的JSON,目前該錯誤正在起作用。 – Incognito 2010-08-29 05:15:37