javascript - 解析 JSON 时出现问题

标签 javascript json

我在尝试使用 JSON 格式的第三方 Web 服务时遇到问题。来自服务器的 JSON 响应看起来像这样:

{
    "ID":10079,
    "DateTime":new Date(1288384200000),
    "TimeZoneID":"W. Europe Standard Time",
    "groupID":284,
    "groupOrderID":10
}

我使用没有额外库的 JavaScript 来解析 JSON。

//Parse JSON string to JS Object            
var messageAsJSObj = JSON.parse(fullResultJSON);

解析失败。 JSON 验证器告诉我,“new Date(1288384200000)”无效。

有没有可以帮我解析 JSON 字符串的库?

最佳答案

正如其他人所指出的,它是无效的 JSON。一种解决方案是使用 eval() 而不是 JSON.parse() 但这会给您带来潜在的安全问题。

更好的方法可能是搜索并替换这些有问题的问题,将数据转换为有效的 JSON:

fullResultJSON = fullResultJSON.replace(/new Date\((\d+)\)/g, '$1');

您甚至可以更进一步,使用 JSON.parse() 的第二个参数将这些字段“恢复”到 JavaScript Date 对象中:

var messageAsJSObj = JSON.parse(fullResultJSON, function (key, value) {
    if (key == "DateTime")
        return new Date(value);

    return value;
}); 

这是一个例子:http://jsfiddle.net/AndyE/vcXnE/

关于javascript - 解析 JSON 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4245403/

相关文章:

javascript - 内部异步函数完成运行后如何调用外部函数返回?

javascript - 对象未被读取 node.js

javascript - 如何在鼠标悬停时获取 highcharts 图形点的值?

javascript - 从附加元素 jquery 访问对象属性或方法

javascript - 将 Java 日期字符串转换为 javascript 日期

java - 从 json 字符串中提取 json

javascript - Firefox svg 渲染 : how to get real g position?

javascript - 使用 JQuery 显示 JSON

json - 如何解决这个 "Caution: request is not finished yet in chrome"

c# - 如何在C#中访问JSON对象