【问题标题】:Check JSON contents for specific string检查特定字符串的 JSON 内容
【发布时间】:2014-01-29 17:00:11
【问题描述】:

我一直在学习,我想我终于完成了这个我一直在苦苦挣扎的小“项目”!我看过一些类似的主题,但不能完全根据我的需要调整代码!

我有一个正确显示的 JSON 输出,我正在寻找通过它搜索特定值,并且只将这些结果粘贴到表中。

我有以下 Javascript,它获取 XML 数据并将其粘贴到表中。

Javascript

var html = '<table id="myTable"><thead><tr><th>Entry</th>';
    for ( row = 0; row < jsondata.rowCount; row++ )
    {
        html += "<tr><td>" + (row+1) + "</td>";
        for ( column = 0; column < jsondata.columnCount; column++ )
        {
            if((jsondata.xmlData [ row ] [ column ]) == "Ninja")
            {
                html += "<td>" + jsondata.xmlData [ row ] [ column ] + "</td>"
            }

            alert(jsondata.xmlData [ row ] [ column ]); //Added in edit - "undefined"
        }
        html += "</tbody></table>";
        $("#tablearea").html(html);
    }

编辑:JSON

"xmlData" : [ [ "Ninja", "Blue"], [ "Car", "Red"] ]

如果我排除 if 语句,它将全部粘贴,但 if(当使用警报测试时)状态为 undefined

【问题讨论】:

  • 你能分享一段你的json数据吗?或者更好的是,你能创造一个小提琴吗?
  • 您是否尝试过 foreach 或循环 json 数组以匹配该值?
  • 你把警报放在哪里?请在您的代码中显示。
  • @user3059001 - 我没有,这样的循环的语法是什么?至少可以说查找文档很棘手!
  • 不是真的 -- google javascript foreach -- developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

标签: javascript jquery html json json.net


【解决方案1】:

编辑(更简洁):

我相信您的问题是您的 rowCount 成员与您的实际行数不匹配。您可以使用数组的 .length 属性,或者(在您给定的对象中),您可以执行以下操作...

var jsondata = {
    rowCount: 3,
    columnCount: 2,
    xmlData: [["Ninja", "Blue"], ["Car", "Red"]]
};

var html =  '<table id="myTable">' +
            '<thead>' +
            '<tr><th>Entry</th><tr>';
html += "<tbody>";
for (row = 0; row < jsondata.rowCount; row++) {
    var showRow = false;
    var tempHtml = "<tr>";
    for (column = 0; column < jsondata.columnCount; column++) {
        if (jsondata.xmlData[row]) {
            tempHtml += "<td>" + jsondata.xmlData[row][column] + "</td>";
            showRow = (jsondata.xmlData[row][column] == "Ninja") || showRow;
        }
    }
    tempHtml += "</tr>";
    if (showRow) {
        html += tempHtml;
    }
}
html += "</tbody></table>";
$("#tablearea").html(html);

【讨论】:

  • 这非常有效。但是,当使用外部 JSON 文件时,它会崩溃!但我最好自己尝试解决这个问题!谢谢!
【解决方案2】:

您的 rowCount 和/或 columCount 似乎与数组的实际长度不匹配(可能只是切换)。

无论如何我建议检索数组的长度来直接检查它们

var html = '<table id="myTable"><thead><tr><th>Entry</th>';
for ( row = 0; row < jsondata.xmlData.length; row++ )
{
    html += "<tr><td>" + (row+1) + "</td>";
    for ( column = 0; column < jsondata.xmlData[row].length; column++ )
    {
        if((jsondata.xmlData [ row ] [ column ]) == "Ninja")
        {
            html += "<td>" + jsondata.xmlData [ row ] [ column ] + "</td>"
        }

    }
    html += "</tbody></table>";
    $("#tablearea").html(html);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    相关资源
    最近更新 更多