【问题标题】:Does JSON.parse support parsing string without double quoteJSON.parse 是否支持解析没有双引号的字符串
【发布时间】:2017-04-13 23:38:44
【问题描述】:

我有以下 json 数据。问题出在最后一个字段"totalChildMillis" : NumberLong(2)NumberLong(2) 没有被引用。当我运行JSON.parse 时,我遇到了关于该字段的异常。 JSON.parse 有没有办法忽略双引号?我不想自己预先解析字符串,所以我正在寻找一种自动为我处理的方法。

{
  "executionStages" : {
    "stage" : "SINGLE_SHARD",
    "nReturned" : 10000,
    "executionTimeMillis" : 3,
    "totalKeysExamined" : 0,
    "totalDocsExamined" : 10000,
    "totalChildMillis" : NumberLong(2)
  }
}

【问题讨论】:

  • 不,它是无效的 json。如果要传递带参数的方法,可以将它们设为两个单独的字段,然后执行类似 window[data.totalChildMethod].call(data.totalChildMillis);
  • 以上JSON是谁生产的?您还是第三方?
  • Mongodb 可以产生像NumberLong(2)这样的输出
  • @engineforce mongo shell 生成了 JSON。我向 mongo shell 发送了一个解释命令,并从标准流中获取了该输出。
  • Force mongodb to output strict JSON 可能会解决您的问题。

标签: javascript


【解决方案1】:

这不是一个有效的 json,所以JSON.parse 会失败。看来您可以通过这样做使其成为有效的json

var jsonString = rawString.replace(/NumberLong\((\d*)\)/g, "$1")

然后

JSON.parse(jsonString)

如果NumberLong来自Mongo,你可能可以让它直接输出一个有效的json

【讨论】:

    猜你喜欢
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2021-10-24
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多