Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jquery中获取JSON数据并将其解析为数组?_Javascript_Jquery_Json_Ajax - Fatal编程技术网

Javascript 如何在jquery中获取JSON数据并将其解析为数组?

Javascript 如何在jquery中获取JSON数据并将其解析为数组?,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我试图从服务器获取数据并对其进行解析,以便将其格式化为HTML格式 我在解析JSON文件中的数据时遇到问题 这是我的密码: JS var AnnouncementsJSON $.get(“data/announcements.json”,函数(data){ console.log(数据) AnnouncementsJSON=$.parseJSON(数据) }); console.log(AnnouncementsJSON) announcements.json { “公告”:[ { “标题”

我试图从服务器获取数据并对其进行解析,以便将其格式化为HTML格式

我在解析JSON文件中的数据时遇到问题

这是我的密码:

JS

var AnnouncementsJSON
$.get(“data/announcements.json”,函数(data){
console.log(数据)
AnnouncementsJSON=$.parseJSON(数据)
});
console.log(AnnouncementsJSON)
announcements.json


{
“公告”:[
{
“标题”:“这是公告!”,
“副标题”:“这将被用作公告”,
“链接”:“/somewhere.html”
}
]
}
控制台/检查元件:

(index):189 {announcements: Array(1)}
VM976:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
    at Function.parse [as parseJSON] (<anonymous>)
    at Object.success ((index):190)
    at c (jquery.min.js:2)
    at Object.fireWith [as resolveWith] (jquery.min.js:2)
    at l (jquery.min.js:2)
    at XMLHttpRequest.<anonymous> (jquery.min.js:2)
(anonymous) @ (index):190
c @ jquery.min.js:2
fireWith @ jquery.min.js:2
l @ jquery.min.js:2
(anonymous) @ jquery.min.js:2
load (async)
send @ jquery.min.js:2
ajax @ jquery.min.js:2
S.<computed> @ jquery.min.js:2
(anonymous) @ (index):188

(索引):189{公告:数组(1)}
VM976:1未捕获的语法错误:JSON中位置1处的意外标记o
在Function.parse[as parseJSON]()
at Object.success((索引):190)
at c(jquery.min.js:2)
在Object.fireWith[as resolveWith](jquery.min.js:2)
在l(jquery.min.js:2)
在XMLHttpRequest。(jquery.min.js:2)
(匿名)(索引):190
c@jquery.min.js:2
fireWith@jquery.min.js:2
l@jquery.min.js:2
(匿名)@jquery.min.js:2
加载(异步)
发送@jquery.min.js:2
ajax@jquery.min.js:2
S.@jquery.min.js:2
(匿名)@(索引):188

在错误消息上方,它显示了
{Announcements:Array(1)}
,因此我知道我可以从浏览器访问JSON文件。另外,我导航到它,并且能够访问它

我相信您正在寻找的解决方案是,但是我也认为这个负载不需要JSON.parse,因为它是作为一个对象出现的。返回具有响应负载的对象。

您应该能够访问该对象,而无需进行任何额外的分析。我认为您之所以会遇到这个错误,是因为您试图解析已经解析过的json…

“意外令牌o”几乎总是意味着您根本得不到json:打开您的开发工具,选择“网络”选项卡,重新运行获取并查看您实际得到的内容。“意外令牌o”通常在您尝试解析已解析的内容时出现。Log
typeof data
如果它是“object”,jQuery已经为您解析了它。我认为您是正确的,因为我在尝试这个示例时看到了相同的错误:var e=JSON.parse({thing:“test”})该示例解析一个对象,但它给出了一个错误,因为它应该解析JSON字符串。换句话说,只能做:AnnouncementsJSON=data@raddevus你说得对!JSON.parse需要一个字符串化的对象,以便将其转换为对象。与此相反的是JSON.stringify,它接受一个对象并将其转换为字符串。它对于在本地存储中存储加密对象非常有用。