【发布时间】:2017-05-19 19:09:01
【问题描述】:
使用 $.getJSON 从外部 .json 文件中获取数据,内容如下。
{
"title_12345":"<span class=\"header-class\">Header</span>",
"p_12345":"<span class=\"description-class\">description</span>",
"p_23456":"Another paragraph",
"p_34567":"Another second paragraph",
"desc": [
"title_12345",
"p_12345",
{
"ul_12345": [
"li_1",
"li_2"
]
},
"p_23456",
{
"ul_12345": [
"li_3",
{
"ul_23456": [
"li_6",
"li_7"
]
},
"li_4",
"li_5"
]
}
],
"li_1":"Listing One",
"li_2":"Listing Two",
"li_3":"Another Listing",
"li_4":"Another Second Listing",
"li_5":"Another Thrid Listing",
"li_6":"Sub One Listing",
"li_7":"Sub Two Listing"
}
我想要实现的目标如下。 基于“desc”数组创建一个具有匹配键值对的新对象。
"desc": [
"title_12345":"<span class=\"header-class\">Header</span>",
"p_12345":"<span class=\"description-class\">Description</span>",
{
"ul_12345": [
"li_1":"Listing One",
"li_2":"Listing Two"
]
},
"p_23456":"Another paragraph",
{
"ul_23456": [
"li_3":"Another Listing",
{
"ul_23456": [
"li_6":"Sub One Listing",
"li_7":"Sub Two Listing"
]
},
"li_4":"Another Second Listing"
"li_5":"Another Thrid Listing"
]
}
]
使用新的“desc”对象,创建 html 内容以附加到 html 页面。 注意“desc”数组=返回数据的DOM层次结构
如果键包含 "title_" ,则在 <h4> 中打印值(不包括 <span>)。结果:<h4>Header</h4>
如果键包含“p_”,则在<p> 中打印值(不包括<span>)。结果:<p>Description</p>
如果键包含“ul_”,则在<li> 循环中打印每个对象。结果:<ul><li>Listing One</li><li>Listing Two</li></ul>
这将是附加在页面上的最终结果
<h4>Header</h4>
<p>Description</p>
<ul>
<li>Listing One</li>
<li>Listing Two</li>
</ul>
<p>Another paragraph</p>
<ul>
<li>Another Listing</li>
<ul>
<li>Sub One Listing</li>
<li>Sub Two Listing</li>
</ul>
<li>Another Second Listing</li>
</ul>
知道如何使用 jQuery 实现这个结果吗?提前致谢。
【问题讨论】:
-
“我想要实现的是将“desc”数组值与数据对键值相匹配,如下所示......” - 我想注意你显示的内容此语句下方的 JSON 无效。数组不能有属性。只有对象可以。为了得到你想要的,你需要将
desc转换为一个对象,然后将两个内部对象嵌套在一个额外的数组中......