2012-06-11 279 views
117

如何讓JS認爲字符串是JSON?將字符串轉換爲JSON對象

我有一個函數,只有當JSON對象傳遞給它時纔有效。如果我向它傳遞一個字符串,格式與JSON相同,則不起作用。所以我想讓這個函數認爲傳遞給它的字符串是一個JSON。該字符串確實是JSON格式。

我也試過以下。我通過Ajax輸入字符串,「handle as」參數爲「JSON」,然後當我將結果傳遞給它的函數時。

所以我推斷問題是不是與字符串。如何將此字符串轉換爲JSON?如果我通過ajax請求獲得相同的字符串,然後將它傳遞給函數作品,而直接傳遞它不起作用。

的字符串如下:

{ 
    "data": [ 
    { 
    "id": "id1", 
     "fields": [ 
     { 
      "id": "name1", 
      "label": "joker", 
      "unit": "year" 
     }, 
     {"id": "name2", "label": "Quantity"}, 
    ], 
     "rows": [ data here.... 

and closing braces.. 
+1

可能重複[安全地將JSON字符串轉換爲對象](http:// stackoverflow。com/questions/45015 /安全地轉身成json-string-into-an-object) – ManseUK

+1

你的標題有誤導性。基於你的問題的內容,我寧願說你想要將包含JSON的字符串轉換爲JavaScript對象/數組。 –

+0

好的,我解決了它。字符串中有\ n。現在只需要弄清楚如何使用JSON.parse。 – Zer0

回答

298
var obj = JSON.parse(string); 

哪裏string是你的JSON字符串。

+0

這不起作用。它引發錯誤「SyntaxError:JSON.parse:unexpected character」。字符串沒有什麼問題,因爲當我通過ajax請求獲取相同的字符串並將其作爲「JSON」處理時,不會出現問題。 – Zer0

+0

請張貼您的acutal JSON字符串 – Kshitij

+0

發表。檢查主帖.. – Zer0

24

可以使用JSON.parse()了點。

See docs at MDN

例子:

var myObj = JSON.parse('{"p": 5}'); 
console.log(myObj); 
+0

這不起作用。它引發錯誤「SyntaxError:JSON.parse:unexpected character」。字符串沒有什麼問題,因爲當我通過ajax請求獲取相同的字符串並將其作爲「JSON」處理時,不會出現問題。 – Zer0

+2

@ Zer0:你應該更新你的問題,你如何與你的json字符串一起嘗試它。 – Sarfraz

+3

@ Zer0:我們只能回答最好的知識。你說你有一個JSON字符串,我們相應地回答。看起來你的字符串是不同的,如果你發佈它,我們可以回答這個問題。如果你問一個關於編碼的問題,那麼代碼/數據是不可或缺的。 –

6

我有同樣的問題有類似的串像你

{id:1,field1:"someField"},{id:2,field1:"someOtherField"} 

問題她是字符串的JSON解析器WASN的結構不承認在這種情況下需要創建2個對象。所以我所做的是一種愚蠢的,我只是重新構建我的字符串以及與此解析器添加[]認可

var myString = {id:1,field1:"someField"},{id:2,field1:"someOtherField"} 
myString = '[' + myString +']' 
var json = $.parseJSON(myString) 

希望它能幫助,

如果任何人有一個更好的方法請分享。

+0

在你的代碼中,你已經錯誤地構造了'myString',它不是一個字符串,它的格式不正確,你的第二行會變得多餘。以下是它應該是的: 'var myString ='[{「id」:1,「field1」:「someField」},{「id」:2,「field1」:「someOtherField」}]'' 我知道這是一個相當古老的帖子,但我認爲如果有人發現它,我會增加一些清晰度。 –

0

JSON.parse()功能會做。

使用jQuery,

var obj = jQuery.parseJSON('{ "name": "Vinod" }'); 
alert(obj.name === "Vinod"); 
2
var Data=[{"id": "name2", "label": "Quantity"}] 

傳遞字符串變量爲JSON解析:

Objdata= Json.parse(Data); 
+0

在你的例子中,'Data'已經是一個對象,所以不需要解析它。爲了使其成爲字符串,您需要圍繞所有數據引用一些引號。 –

0

只需使用eval功能。

var myJson = eval(theJsibStr);