【问题标题】:Processing JSON string gives JavaScript error [duplicate]处理 JSON 字符串会导致 JavaScript 错误 [重复]
【发布时间】:2015-04-08 19:29:03
【问题描述】:

作为我正在构建的项目管理应用程序的一部分,每个 项目任务 都会有一个面板,显示该特定任务记录的事件和评论。这些Events 将作为JSON 结果从服务器从 AJAX 请求中返回以获取它们。

以下只是一个快速的 JavaScript 测试,用于加载由 3 个测试事件记录组成的模型 JSON 字符串。

它应该从字符串中加载它们,实时应用程序将从 AJAX 调用中加载它们。

然后它会遍历结果并将它们注入到页面 DOM 中。

我的问题是下面的代码在控制台中显示了这个错误......

Uncaught SyntaxError: Unexpected token o

下面是产生错误消息的示例代码,这里还有一个 JSFiddle/JSBin 演示来查看实时问题....http://jsbin.com/zusehaxeya/1/edit?js,output

var sampleJsonData = {
    "task_events": [{
        "commentId": 100000000,
        "projectId": 100000000,
        "taskId": 100000000,
        "userId": 100000000,
        "created_at": "2009-02-15",
        "event_type": "Task Completed",
        "userName": "Edward White",
        "description": "Ut Excepteur dolor sed magna in sed cupidatat eu cupidatat voluptate velit ut Lorem amet, Excepteur fugiat et labore velit cupidatat nisi sunt laboris tempor in velit dolore velit fugiat do irure anim consequat. Ut nisi magna proident, quis incididunt pariatur. cupidatat sunt nulla reprehenderit exercitation mollit Duis aliqua. officia id minim irure ad deserunt ipsum"
    }, {
        "commentId": 100000001,
        "projectId": 100000001,
        "taskId": 100000001,
        "userId": 100000001,
        "created_at": "2007-04-07",
        "event_type": "Project File Uploaded",
        "userName": "Christopher Perez",
        "description": "consectetur consequat. tempor do quis voluptate proident, est irure exercitation tempor cillum ut Lorem et veniam, Excepteur elit, reprehenderit laborum enim occaecat esse magna eiusmod sit voluptate Lorem enim incididunt cillum quis est Duis proident, anim Excepteur dolore in eu tempor aliqua."
    }, {
        "commentId": 100000002,
        "projectId": 100000002,
        "taskId": 100000002,
        "userId": 100000002,
        "created_at": "1975-06-20",
        "event_type": "Task Deleted",
        "userName": "Paul Anderson",
        "description": "pariatur. in consequat. officia ex irure velit"
    }]
};


// Parse JSON data var
var taskEventsJson = $.parseJSON(sampleJsonData);
var task_events = taskEventsJson.task_events;

// Loop over each Task Event record returned
$.each(task_events, function(i, event){
  console.log(event.commentId);
  console.log(event.created_at);

  //now json variable contains data in json format
  //let's display a few items
  $('#results').append('Comment ID: ' + event.commentId + '<br />Created DateTime: ' + event.created_at);


});

【问题讨论】:

标签: javascript jquery json


【解决方案1】:

sampleJsonData 不是 JSON 字符串。在我们的例子中,您不需要使用parseJSON。当你有 JSON 字符串并且想要将其转换为 JavaScript 对象时,你应该使用 parseJSON,就像这样

var sampleJsonData = '{"x": 1}';
$.parseJSON(sampleJsonData);

【讨论】:

  • 感谢您澄清这一点。混乱来自我的实时版本从 AJAX 调用返回一个实际的 JSON 字符串,而我的演示没有使用真正的字符串....现在更有意义了,谢谢!
【解决方案2】:

您的 sampleJsonData 是一个 JavaScript 对象,而不是 JSON 字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2017-08-02
    相关资源
    最近更新 更多