Javascript jquerygrep+;JSON空数据过滤器
我有一个JSON文件,我正在将数据注入一个HTML页面。 我想过滤掉从JSON文件返回的任何空对象数组 我的代码如下-我应该使用GREP吗Javascript jquerygrep+;JSON空数据过滤器,javascript,jquery,json,Javascript,Jquery,Json,我有一个JSON文件,我正在将数据注入一个HTML页面。 我想过滤掉从JSON文件返回的任何空对象数组 我的代码如下-我应该使用GREP吗 $(data.content).each(function(index, content){ $("#htmlID").append('<span>' + content.myinfo + '); }); { "content": [ {"myinfo":"B
$(data.content).each(function(index, content){
$("#htmlID").append('<span>' + content.myinfo + ');
});
{
"content":
[
{"myinfo":"Bill Clinton 095 years old. "},
{" "},
{"myinfo":"Bill Clinton 295 years old. "},
{" "}
]
}
$(data.content)。每个(函数(索引、内容){
$(“#htmlID”).append(“”+content.myinfo+”);
});
{
“内容”:
[
{“myinfo”:“比尔·克林顿095岁。”},
{" "},
{“myinfo”:“比尔·克林顿295岁。”},
{" "}
]
}
您不能忽略空数据吗?像这样的
$(data.content).each(function(index, content){
if(!(typeof content.myinfo === "undefined" ||
content.myinfo.length<1)){
$("#htmlID").append('<span>' + content.myinfo);
}
});
$(data.content)。每个(函数(索引、内容){
如果(!(typeof content.myinfo==“未定义”||
content.myinfo.length来自{“”}语法错误的一部分(它是否只是{}?)唯一正确的方法是使用解析器迭代对象并删除不需要的内容
这可以通过使用jQuery.parseJSON(json)
(请参阅:)来实现,这还可以确保在json字符串中不会执行恶意代码
其他方法,例如删除与regexp匹配的行,都是非常糟糕的黑客行为,在一些非标准场景中可能会导致许多问题
编辑:
我看到还有一个问题:将JS对象转换回JSON字符串
无论如何,我不确定您的实际需要是什么(content.myinfo.myinfo中包含什么?为什么要这样构建HTML+JSON代码?JSON字符串是如何生成的?根据,您的JSON无效
JSON中的空对象应如下所示:
{" ": ""}
将两个空对象更改为上面的形式会使字符串成为有效的JSON,这应该可以解析。您的语法没有意义。{”“}
应该是什么?我猜这就是“空数组对象”OP正在谈论。假设这不是一个打字错误,你发布的不是有效的JSON;你应该在源代码中更好地格式化它,否则它不会在JS中正确解析。编辑代码,错过了你已经在迭代data.content。这应该行得通。是的,你可能会使用grep达到同样的效果。但是,正如你在JSON中所说的,你有{“”},这是无效的。这将阻止正确解析JSON。在这种情况下,这和grep都没有帮助。好的,那么上面的方法应该可以正常工作;或者可以在数组上使用grep。