【问题标题】:Missing quotes in JSON object. How to add them in?JSON 对象中缺少引号。如何添加它们?
【发布时间】:2013-05-14 12:21:45
【问题描述】:

通过 jqGrid 传递解析的 JSON 变量时,我遇到了一个小问题。 我正在查询一个 MS Access .mdb 文件。问题是有一个 ID 字段,它是 MS Access 中的自动编号整数字段,并且在查询时没有引号。 jqGrid 不喜欢这个,这就是它没有在表中显示 ID 值的原因。

 var SQL = "SELECT * FROM test";
 var resultSet = myDB.query(SQL);
// resultSet will yield [{"ID":1,"name":"albert","9999999999"},{"ID":2,"name":"peter","8888888888"}]
 var mydata = JSON.parse(resultSet)

请注意上面的结果集如何在 ID 值上没有引号,但其余的都有。这导致在 ID 列中没有值的表。如何在通过 JSON 解析 ID 值之前为其添加引号?

谢谢。

整个代码..

【问题讨论】:

  • 你得到的是 JSON 字符串还是 JavaScript 数据结构?
  • 是的,它采用 JSON 结构,但对于数字和整数,它没有引号。除非值有引号,否则 jqGrid 不会显示。
  • 我知道这并不能回答你的问题,但是 JSON 中的数字不能被引用;如果是,它们就是字符串。

标签: javascript sql json jqgrid quotes


【解决方案1】:

jqGrid 可以像处理字符串一样处理整数。因此,您无需将数字更改为字符串。您在上一个问题中发布的 JSON 包含 id 而不是 ID。 JavaScript 是区分大小写的语言。我想如果你替换,你会在id 列中看到值

{name:'ID',index:'ID', width:60, sortable:false},

{name:'id', width:60, sortable:false},

另外,我建议您从comModel 中删除index 属性。

【讨论】:

    【解决方案2】:
    for (item in resultSet[0]){
        if (typeof(item) === "number"){
            item = " + item ";
        }
    }
    

    未经测试和头部编码,也许它可以工作。这完全是废话,不可能工作...... item = " + item "; 行应该会产生错误,因为这不是有效的 javascript。

    resultSet[0].forEach(function(d){
        d.ID = '"' + d.ID + '"';
    }
    

    【讨论】:

    • 我有另一种测试方法。我的意图是遍历 json 结果中的所有对象并为 ID 值添加引号。
    • "对象不支持此属性或方法。" ://
    • resultSet 代替 resultSet[0] 有帮助吗?
    • 好的,正如我刚刚认识到的那样,resultSet 不包含 JS 对象,所以我的方法没用。不能帮你解决这个问题...
    猜你喜欢
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多