Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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 - Fatal编程技术网

在JavaScript/JQuery中解析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

我有一个Json对象,如下所示

{
"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