2012-04-19 116 views
0

我嘗試創建一個工作json對象結構來創建一個定義列表。 看看我在這裏試着這樣做: jsfiddle從json對象創建定義列表

var x = 
[{ 
    "dl": 
    { 
     "dt":"head 1" 
     { 
      "dd": 
      [ 
       "listitem 1", 
       "listitem 1", 
       "listitem 1", 
       "listitem 1", 
       "listitem 1" 
      ] 
     }, 
     "dt":"head 2" 
     { 
      "dd": 
      [ 
       "listitem 2", 
       "listitem 2" 
      ] 
     } 
    }  
}] 
; 

通過執行JS的這個片段我嘗試從JSON對象創建markupt:

$.each(x["dl"], function(i,v){ 
    console.log(this.dt, this.dd); 
}); 

使用變量x,我嘗試創建以下標記:

<dl> 
    <dt>head 1</dt> 
    <dd>listitem 1</dd> 
    <dd>listitem 1</dd> 
    <dd>listitem 1</dd> 
    <dd>listitem 1</dd> 
    <dd>listitem 1</dd> 

    <dt>head 2</dt> 
    <dd>listitem 2</dd> 
    <dd>listitem 2</dd> 
</dl> 

<dl> 
    <dt>head 1</dt> 
    <dd>listitem 1</dd> 
    <dd>listitem 1</dd> 
    <dd>listitem 1</dd> 
    <dd>listitem 1</dd> 
    <dd>listitem 1</dd> 

    <dt>head 2</dt> 
    <dd>listitem 2</dd> 
    <dd>listitem 2</dd> 
</dl> 

標記是我需要創建的。我在我的JSON結構中做了什麼錯誤?

+0

請在這裏發佈代碼。這樣可以幫助2年後的人出現同樣的問題。 – 2012-04-19 19:43:17

+0

你需要告訴我們更多關於你想要做的事情。這不夠具體,問題可能會被關閉。 – 2012-04-19 19:44:30

+1

您的對象聲明無效。說'dt':「head 1」的部分後面緊接着是「{」。你需要用逗號或'}'跟隨它。 – 2012-04-19 19:46:46

回答

3

首先,這是而不是 JSON。這只是一個JavaScript對象。 JSON是JavaScript對象的字符串表示

二,您的對象不正確。你不能有多個dt屬性,我建議做一個數組。 "dt":"head 1" {無效。另外,x應該是一個對象,而不是一個對象的數組。

我建議讓你的對象是這樣的:

var x = { 
    "dl": [{ 
     "dt": "head 1", 
     "dd": ["listitem 1", "listitem 1", "listitem 1", "listitem 1", "listitem 1"] 
    }, { 
     "dt": "head 2", 
     "dd": ["listitem 2", "listitem 2"] 
    }] 
}; 

x是包含dl屬性的對象。 x.dl是一個包含對象的數組。這些對象包含dtdd屬性。現在

您的片段將正常工作:

$.each(x["dl"], function(i,v){ // you can also use "x.dl" 
    console.log(this.dt, this.dd); 
}); 

這個對象,可以很容易地讓你想要的HTML。

+0

Rocket,非常感謝:在我的jsfiddle的第22版中,我收到了你的提示。我現在沒有得到:將對象變成JSON對象需要做什麼修改?我經常在Ajax請求中「使用」JSON,但從來不需要構建一些 - 我將文檔變成紅色,但顯然理解錯誤。Greets – 2012-04-19 20:21:22

+1

沒有像「JSON對象」這樣的東西。 JSON只是JavaScript對象的字符串表示。 「{a:12}」是一個對象,「{」a「:12}」是JSON。您可以使用'JSON.stringify'將其轉換爲JSON,並使用'JSON.parse'將其轉換爲對象。取決於你想要對象做什麼。 – 2012-04-19 20:25:14

+0

3年後..我剛剛讀了你的最後一條評論:-)以及所有讀過它的人:這就是所謂的JSONObject(不要把它當作太好.. {「a」:「12」})http ://www.json.org/javadoc/org/json/JSONObject.html – 2015-05-29 11:59:03