【发布时间】:2015-12-30 16:47:00
【问题描述】:
我有一个深度可变的 JSON 文档。一个例子:
[
{
"type": "firsttype",
"text": {
"id": "content"
}
}
]
我想做的是检索某些键的值,比如text。由于我不知道这些键可能出现在 .JSON 中的什么位置,因此我需要使用递归函数。然后我尝试在 HTML 文件中显示这些键和值。
我这里有一个初步的尝试:
$.getJSON("file.json", function getText (oValue, sKey) {
links = [];
if (typeof oValue == "object" || typeof oValue == "array") {
for (i in oValue) {
getText (oValue [i], i);
}
} else {
links.push ( "<li id='" + oValue + "'>" + sKey + "</li>" );
}
$( "<ul/>", {
"class": "my-new-list",
html: links.join( "" )
}).appendTo( "body" );
});
当我在本地或远程或python -m SimpleHTTPServer 上加载页面时,我没有收到任何错误,页面上也没有任何内容。我究竟做错了什么?我已将所有 JS 包含在 $.getJSON 调用中,因此不会出现异步问题。
将来我还想包含一个正则表达式检查,以便我可以提取具有特定字符串的值,例如/http/。最好的方法是什么?
【问题讨论】:
-
您能否为我们复制此 JSON 的完整结构?
-
添加错误处理程序....可能是解析错误或请求失败。我们无法知道,但您需要隔离问题。还要检查浏览器开发工具网络中的实际请求以获取线索
-
@Pointy 我认为如果
appendTojquery 的东西在某种程度上超出了getText函数并且不是每次都被调用,那么将links作为一个全局变量会很有意义。 -
@AbbasMashayekh,
appendTojquery 的东西应该在getText之外并且只调用一次。
标签: javascript jquery json regex recursion