2013-12-09 62 views
-1

對象如何將返回以下字符串作爲對象轉字符串與JavaScript的

{src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200} 

更新

我有一個PHP文件輸出JSON。我使用AJAX來訪問我的js中的JSON。

我已經使用JSON.parse(json_string),所以我現在有我的對象。這是返回的內容:

[{"name":"img","attributes":"{src:'img\/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200}","comments":"image element with attributes"},{"name":"triangle","attributes":"{bgColor : '#FF0000', coord : {x:500, y:300}, width:50, height, 50}","comments":"triangle"}] 

我現在可以使用for循環來查看這些位。

for(key in json_object) { 
var name_type = json_object[key].name; 
var attrib = json_object[key].attributes; 
} 

這裏ATTRIB返回

{src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200}. 

正是這個字符串,我需要轉換成一個對象。

感謝 戴夫

+2

它看起來像一個對象給我。如果你是以JSON的形式得到這個,那麼使用'JSON.parse(string)' – PSL

+1

@PSL:哪個不行,因爲它不是有效的JSON。至少現在沒有什麼。 –

+0

請提供更多的上下文。你如何得到字符串? –

回答

1

正如很多人指出的那樣,您應該首先將此數據存儲爲有效的JSON,另一篇文章指出您的對象甚至不是有效的JavaScript對象字面量。你如何選擇序列化你的數據最終是你的選擇,但你至少應該在編碼時遵守一些規則,否則你怎麼能期望解析它?

... width:200, height, 200} 
        ^------- Invalid JS Object Notation 

也就是說,如果出於某種原因,你不能輕易更改設置(你應該立志最終重構),你可以有,只要你信任來源的JavaScript計算表達式

var str, obj; 
str = "{src:'img/testimage.jpg', coord:{x:17, y:39}, width:200, height:200}"; 
obj = new Function('return '+str)(); 

相關閱讀:

Why is using the JavaScript eval function a bad idea?

1

你必須使用JSON.parse(string)但首先你需要讓你的字符串有效的JSON。這意味着您必須執行以下操作:

而不是{src:'img/testimage.jpg'...它應該是{"src":"img/testimage.jpg"...(請注意src上的引號)。每個應當內包裹引用""'',並且每個應該是完全它將如何被表示爲代碼,例如:一個String將被包裹在引號中,一個int不會;

因此,最終的字符串應該是:

編輯:作爲War10ck說,應當將字符串逃過一劫。

"{\"src\":\"img/testimage.jpg\", \"coord\":{\"x\":17, \"y\":39}, \"width\":200, \"height\":200}" 
+0

你好,我已經更新了我的問題...更詳細一點。謝謝 – magicspon

+0

這仍然是不正確的。看到我的[答案](http://stackoverflow.com/questions/20481895/turn-string-into-an-object-with-javascript/#answer-20482158)。雖然按照規範要求使用雙引號,但內部雙引號(即嵌套字符串)未正確轉義。 – War10ck

+1

事情是,如果你的'String'格式正確,當你去'var attrib = json_object [key] .attributes;'它應該返回一個對象。如果你得到的是'String',那是因爲它的格式不正確 –

0

您的JSON格式不正確。應該是:

{src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height: 200} 

(注意冒號後的高度,而不是一個逗號)

+0

你的JSON格式不正確。根據JSON規範,字符串應該用雙引號'''括起來。 – War10ck

+0

你好,我已經更新了我的問題。最初我有一個很好的有效JSON對象。我的對象中有一個對象是我提到的字符串 – magicspon

+0

If你從你的代碼複製/粘貼,你沒有一個有效的(或「可分析的」,因爲War10ck在技術上是正確的)JSON對象。 – jraede

0

至於其他的答案指出,你需要有一個正確的格式正確轉義JSON字符串使用JSON.parse()。試試這個:

"{\"src\":\"img/testimage.jpg\", \"coord\":{\"x\":17, \"y\":39}, \"width\":200, \"height\":200}" 

按照JSON Spec,所有的字符串必須用雙引號"。 JSON字符串中的所有字符串都應該已經正確地轉義了雙引號\"