【问题标题】:create definition list from json object从 json 对象创建定义列表
【发布时间】:2012-04-19 19:41:25
【问题描述】:

我尝试创建一个有效的 json-object 结构来创建一个定义列表。 看看我在这里尝试做什么: jsfiddle

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 的 sn-p,我尝试从 JSON 对象创建标记:

$.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 结构中做错了什么?

【问题讨论】:

  • 请把代码也贴在这里。这样,它可以帮助 2 年后遇到同样问题的人。
  • 您需要告诉我们更多关于您想要做什么的信息。这还不够具体,问题可能已经结束。
  • 您的对象声明无效。 "dt":"head 1" 后面紧跟着的是{。您需要用逗号或} 跟随它。
  • 您的对象无效。您不能有多个 dt 属性(最后一个将覆盖以前的)。 "dt":"head 1" { 这是无效的。
  • 好的,我尝试在 jsfiddle 的 Revision 17 中进行更改,但仍然无法正常工作,还有什么问题?

标签: javascript json list structure


【解决方案1】:

首先,这是不是 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 属性。

现在您的 sn-p 将正常工作:

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

从这个对象可以很容易地制作出你想要的 HTML。

【讨论】:

  • Rocket,非常感谢:在我的 jsfiddle 的第 22 版中,我按照你的提示得到了它。我现在没有得到什么:需要进行哪些更改才能使对象成为 JSON 对象?我经常在 Ajax 请求中“使用”JSON,但从来不需要构建一些 - 我修改了文档,但显然理解错误.. 问候
  • 没有“JSON 对象”这样的东西。 JSON 只是 JavaScript 对象的字符串表示形式。 {a:12} 是一个对象,'{"a":12}' 是 JSON。您可以使用JSON.stringify 转换为JSON,使用JSON.parse 转换为对象。取决于你想对对象做什么。
  • 3 年后.. 我刚刚阅读了您的最后一条评论 :-) 以及所有阅读过它的人:有一个叫做 JSONObject 的东西(不要把它看得太好.. {"a" :"12"} ) json.org/javadoc/org/json/JSONObject.html
猜你喜欢
  • 1970-01-01
  • 2015-05-07
  • 1970-01-01
  • 2016-06-10
  • 2017-05-06
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多