如何在JavaScript中获取JSON键和值?

101

我将返回如下所示的 JSON

{"name": "", "skills": "", "jobtitel": "Entwickler", "res_linkedin": "GwebSearch"}

我正在尝试获取每个元素的键和值:

..
}).done(function(data){
    alert(data['jobtitel']);
});

我在弹出框中得到了undefined。 为什么?我尝试了data.jobtitel,我尝试循环但没有成功...

我在弹出框中得到了undefined。为什么?我尝试了data.jobtitel,我尝试了循环,但都没有成功。


首先,您需要将该JSON转换为数组,然后尝试使用data.jobtitel。 - sawan
JSON 是字符串,如果你想要访问其中的内容,那么你必须进行转换... - sawan
@swan,$.parseJSON在每个浏览器中并不总是可用的。该怎么办? - doniyor
2
如果你添加jQuery,那么$.parseJSON将可以使用......否则,你必须使用纯JavaScript的JSON转换器JSON.eval(jsonstring)。 - sawan
“jobtitel” 是一个打字错误吗? - A.L
8个回答

168
//By using jquery json parser    
var obj = $.parseJSON('{"name": "", "skills": "", "jobtitel": "Entwickler", "res_linkedin": "GwebSearch"}');
alert(obj['jobtitel']);

//By using javasript json parser
var t = JSON.parse('{"name": "", "skills": "", "jobtitel": "Entwickler", "res_linkedin": "GwebSearch"}');
alert(t['jobtitel'])

查看这个 jsfiddle

jQuery 3.0 开始,$.parseJSON 被弃用。为了解析 JSON 字符串,请使用原生的 JSON.parse 方法。

来源:http://api.jquery.com/jquery.parsejson/


2
这个文档不够详细。能使用json['KeyAsString']真的很棒。谢谢。 - acrawly
我该如何将“Entwickler”解析为职位名称?有没有现成的方法,还是我需要自己编写代码? - dGRAMOP

24

您需要使用JSON.parse()解析那个Json字符串。

..
}).done(function(data){
    obj = JSON.parse(data);
    alert(obj.jobtitel);
});

简化版:JSON.parse(data).jobtitle - Jonas

13
var data = {"name": "", "skills": "", "jobtitel": "Entwickler", "res_linkedin": "GwebSearch"}

var parsedData = JSON.parse(data);
alert(parsedData.name);
alert(parsedData.skills);
alert(parsedData.jobtitel);
alert(parsedData.res_linkedin);

1
这就是在JavaScript中的实现方法。 - Ishara Amarasekera

5

获取密钥

var a = {"a":"1","b":"2"};
var keys = []
for(var k in a){
  keys.push(k)
}

获取值。
var a = {"a":"1","b":"2"};
var values = []
for(var k in a){
  values.push(a[k]);
}

4

这里是一个范例,欢迎查看

我已经做了相应的实例,请查看

(function() {
    var oJson = {
        "name": "", 
        "skills": "", 
        "jobtitle": "Entwickler", 
        "res_linkedin": "GwebSearch"
    }
    alert(oJson.jobtitle);
})();

3

不使用JSON.parse的简单方法

 success: function(response){
     var resdata = response;
     alert(resdata['name']);
}

2

看起来data不包含你认为的内容 - 检查一下。

最初的回答

let data={"name": "", "skills": "", "jobtitel": "Entwickler", "res_linkedin": "GwebSearch"};

console.log( data["jobtitel"] );
console.log( data.jobtitel );


0
您可以使用以下解决方案在JavaScript中获取JSON键和值:
var dt = JSON.stringify(data).replace('[', '').replace(']', '');
if (dt) {
  var result = jQuery.parseJSON(dt);
  var val = result.YOUR_OBJECT_NAME;
}

1
虽然这段代码片段可能是解决方案,但包括解释真的有助于提高您的帖子质量。请记住,您正在回答未来读者的问题,而这些人可能不知道您的代码建议原因。 - Narendra Jadhav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接