簡體   English   中英

JQuery.parseJSON 不適用於字符串

[英]JQuery.parseJSON not working with string

我正在嘗試將字符串解析為對象。 我在以下鏈接中查看了 jQueryparseJSON 文檔,我還包含了 jquery 庫,所以我知道不是這樣。

到目前為止,這是我的代碼

var str = "{'val1': 1, 'val2': 2, 'val3': 3}";
var obj = jQueryparseJSON( str );
alert(obj.val1);

在 Firebug 中,我收到以下錯誤:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

我知道解決方案很可能非常簡單,但我一直在忽視它。

示例代碼中的測試字符串不是有效的 JSON:

var str = '{"val1": 1, "val2": 2, "val3": 3}';
var obj = jQuery.parseJSON( str );
alert(obj.val1);

現在,如果您正在執行所有這些操作是因為某些服務將該對象作為 JSON 字符串提供,那么 jQuery可能無論如何都會為您執行解析步驟。 如果您只是想在 JavaScript 代碼中包含一個對象字面量,那么根本沒有理由涉及 JSON 服務:

var obj = { val1: 1, val2: 2, val3: 3 };

創建一個對象。

請注意,JSON 語法比 JavaScript 對象文字語法更嚴格。 JSON 堅持使用雙引號字符引用屬性名稱,當然值只能是數字、字符串、布爾值或null

您的字符串不是有效的 JSON。 對象鍵必須用雙引號括起來,而不是單引號。

var str = '{"val1": 1, "val2": 2, "val3": 3}';
var obj = jQuery.parseJSON(str);
alert(obj.val1);

演示

function str2json (str, val, obj) {
var obj = str.indexOf("'") != -1 
          ? JSON.parse(str.replace(/'/g, "\"")) 
          : JSON.parse(str);
    return (val === undefined ? obj /* JSON.stringify(obj) */ : obj[val])
};

str2json("{'val1': 1, 'val2': 2, 'val3': 3}", "val1"); // `1`

str2json("{'val1': 1, 'val2': 2, 'val3': 3}") 
// `obj` : `[object Object]` ,
// `JSON.stringify(obj)` : `{"val1":1,"val2":2,"val3":3}`

jsfiddle http://jsfiddle.net/guest271314/n8jLG/

您的代碼中有typo錯誤:

這里var obj = jQueryparseJSON( str );

應該是var obj = jQuery.parseJSON( str );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM