2012-04-19 118 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