在JavaScript/JQuery中解析JSON对象
我有一个Json对象,如下所示在JavaScript/JQuery中解析JSON对象,javascript,jquery,json,Javascript,Jquery,Json,我有一个Json对象,如下所示 { "firstName":"John", "lastName":"Doe" "123":"456" } 我想访问它们的密钥和值。到达后,我会将它们放入字段中。但我不知道为什么它不起作用。我已经检查了它的语法没有问题 我试过的 $(document).ready(function f() { $.ajax('http://soner.dev/test.txt', { success: function(data, status, xhr
{
"firstName":"John",
"lastName":"Doe"
"123":"456"
}
我想访问它们的密钥和值。到达后,我会将它们放入字段中。但我不知道为什么它不起作用。我已经检查了它的语法没有问题
我试过的
$(document).ready(function f() {
$.ajax('http://soner.dev/test.txt', {
success: function(data, status, xhr) {
$(data).each(function(i,val)
{
$.each(val,function(key,val)
{
console.log(key + " : " + val);
alert(key + " : " + val);
$('#{key}').val(val);
});
});
setTimeout(f, 1000); // refresh the data at each second(data changes at each 1sec)
}
});
});
顺便说一下,
$('{key}').val(val)代码>,我尝试在其中使用。响应是一个普通字符串。首先,您需要使用内置的JSON.parse()
函数对其进行解析,然后可以对其进行迭代
要使用模板文字
,您应该将变量置于${
和}
之间
请考虑下面的代码:< /P>
$(document).ready(function f() {
$.ajax('http://soner.dev/test.txt', {
success: function(data, status, xhr) {
var parsedData = JSON.parse(data);
$.each(parsedData, function( key, val ) {
console.log(key + " : " + val);
alert(key + " : " + val);
$(`#${key}`).val(val);
});
setTimeout(f, 1000); // refresh the data at each second(data changes at each 1sec)
}
});
});
响应是一个简单的字符串。首先,您需要使用内置的JSON.parse()
函数对其进行解析,然后可以对其进行迭代
要使用模板文字
,您应该将变量置于${
和}
之间
请考虑下面的代码:< /P>
$(document).ready(function f() {
$.ajax('http://soner.dev/test.txt', {
success: function(data, status, xhr) {
var parsedData = JSON.parse(data);
$.each(parsedData, function( key, val ) {
console.log(key + " : " + val);
alert(key + " : " + val);
$(`#${key}`).val(val);
});
setTimeout(f, 1000); // refresh the data at each second(data changes at each 1sec)
}
});
});
这里有一个对象,而不是数组。在JSON中,对象用{
和}
包装,并具有命名属性,如“firstName”等。数组用[
和]
包装,并具有编号索引,如0、1、2等
因此,您可以简化循环,直接迭代对象键
注意:在开始之前,您还需要将JSON中的数据(即纯文本的符号格式)解析为JavaScript变量。因为您使用的是jQuery,所以可以设置数据类型:“json”
选项,该选项使jQuery将响应作为json处理,并在将数据提供给回调之前自动为您解析
我还修复了您的模板文字语法-您需要使用反勾号(`)和美元符号才能使其正常工作
下面是一个可运行的演示(使用虚拟端点,因为您的端点不支持CORS):
$(文档).ready(函数f(){
$.ajax({
url:“https://api.myjson.com/bins/ntsyj",
数据类型:“json”
}).完成(功能(数据){
$。每个(数据、函数(键、值){
console.log(key+“:”+val);
$(`${key}`)val(val);
});
//setTimeout(f,1000);//每秒刷新数据(数据每1秒更改一次)
});
});代码>
这里有一个对象,而不是数组。在JSON中,对象用{
和}
包装,并具有命名属性,如“firstName”等。数组用[
和]
包装,并具有编号索引,如0、1、2等
因此,您可以简化循环,直接迭代对象键
注意:在开始之前,您还需要将JSON中的数据(即纯文本的符号格式)解析为JavaScript变量。因为您使用的是jQuery,所以可以设置数据类型:“json”
选项,该选项使jQuery将响应作为json处理,并在将数据提供给回调之前自动为您解析
我还修复了您的模板文字语法-您需要使用反勾号(`)和美元符号才能使其正常工作
下面是一个可运行的演示(使用虚拟端点,因为您的端点不支持CORS):
$(文档).ready(函数f(){
$.ajax({
url:“https://api.myjson.com/bins/ntsyj",
数据类型:“json”
}).完成(功能(数据){
$。每个(数据、函数(键、值){
console.log(key+“:”+val);
$(`${key}`)val(val);
});
//setTimeout(f,1000);//每秒刷新数据(数据每1秒更改一次)
});
});代码>
什么是$(数据)
?这不是JSON格式的有效数组(JSON是文本格式)。但是,这是JSON格式的有效对象。您可能希望再次查看该文档中的模板文本;你需要使用勾号,而不是单引号,使用美元符号,而不是英镑符号。我不确定我应该从这个链接中删除什么。这与我在所有场合所说的并不矛盾,使用[]
,而不是{}
<代码>[1,2,3]
是一个array@pathurs假设是指我们如何陷入一个试图解决我们编造的问题,而不是解决实际问题的问题。这就是为什么我们在评论中提问,而不仅仅是根据我们的假设回答什么是$(数据)
?这不是JSON格式的有效数组(JSON是文本格式)。但是,这是JSON格式的有效对象。您可能希望再次查看该文档中的模板文本;你需要使用勾号,而不是单引号,使用美元符号,而不是英镑符号。我不确定我应该从这个链接中删除什么。这与我在所有场合所说的并不矛盾,使用[]
,而不是{}
<代码>[1,2,3]
是一个array@pathurs假设是指我们如何陷入一个试图解决我们编造的问题,而不是解决实际问题的问题。这就是为什么我们在评论中提问,而不仅仅是根据我们的假设回答。我们不提醒和控制台.log?你能在jsfiddle上举例说明吗?你不能在jsfiddle中发出ajax请求,因为CORS
,但我已经测试了它,它的工作原理与你预期的一样。我每秒有三个包含对象键和值的警报。它不警报和console.log?你能在jsfiddle上举例说明吗?你不能在jsfiddle中发出ajax请求,因为CORS
,但我已经测试了它,它的工作原理与你预期的一样。我每秒收到三个包含对象键和值的警报。$.getJSON()
对于我们这些懒惰的开发人员来说也是一个选项:)谢谢你,但我不理解(使用虚拟端点,因为你的端点不支持CORS)
@snr我不能向你的原始URL发出AJAX请求,因为它不允许(即跨域)AJAX