【问题标题】:Get array key value from JSON object从 JSON 对象获取数组键值
【发布时间】:2018-03-12 10:43:04
【问题描述】:

我有一个如下的 JSON 对象

JSON.stringify(obj)

结果:

{
  "e": {
    "name": "tushar",
    "id": "123",
    "tag": {}
  }
}

现在我想要上面对象的名称和 ID。如何从 JSON 对象中获取数组键值?

dp.onEventClick = function(args) {

                 console.log(JSON.stringify(args.e.name));


            };

这是我的职责。

【问题讨论】:

  • 问题是……
  • 如何在一个变量中获得名称“tushar”,在另一个变量中获得 id 123
  • 你的意思是obj.e.name obj.e.id ?
  • obj.e.nameobj.e.id?
  • 我试过 obj.e.name 但它显示未定义

标签: jquery json object


【解决方案1】:

您是否尝试过使用:JSON.stringify(obj.e.name)

console.log(JSON.stringify(obj.e))会给你:

{
    "name": "tushar",
    "id": "123",
    "tag": {}
}

console.log(JSON.stringify(obj.e.name)) 会为您提供所需的输出:tushar 等等。

var object = JSON.parse('{"e":{"name":"tushar","id":"123","tag":{}}}');
console.log(object.e.name);

您收到的数据类型:

var args = JSON.parse('{"e":{"name":"tushar","id":"123","tag":{}}}');
console.log(typeof(args.e));
obj = JSON.stringify(args.e);
console.log(typeof(obj));

你不能这样做:

var args = JSON.parse('{"e":{"name":"tushar","id":"123","tag":{}}}');
var obj = JSON.stringify(args.e); // Here obj is a string
console.log(obj.name); // You cant do like this

因为现在obj 不是一个对象,它的字符串!!! 所以你不会在console.log(obj.name);上得到名字

检查如下代码:

var args = JSON.parse('{"e":{"name":"tushar","id":"123","tag":{}}}');
obj = args.e; // Here obj is also an object.
console.log(obj.name); // so we will get name from obj

JSON.stringify() 将一个对象变成字符串。

希望你能解决你正在做的事情。

【讨论】:

  • console.log(JSON.stringify(obj.e)) 这工作正常,但之后显示未定义
  • console.log(JSON.stringify(args.e));这按照解决方案工作,但在 console.log(JSON.stringify(obj.e.name)) 之后显示未定义。
  • @TUSH:按 F12(控制台)并运行代码截图。检查结果
  • 当我手动创建数组时它工作正常,但是当我使用 args 这个作为数组时它不工作
  • 您是使用args 还是obj 作为对象。 console.log(JSON.stringify(args.e));这个工作。 console.log(JSON.stringify(obj.e.name)) 这显示了一个未定义的。
【解决方案2】:

我认为您正在寻找 JSON.parse() 代替?

您可以使用以下代码:

 var object = JSON.parse('{"e":{"name":"tushar","id":"123","tag":{}}}');
 console.log(object.e.name); // Outputs tushar
 console.log(object.e.id); // Outputs 123

【讨论】:

  • 您必须将字符串传递给 JSON.parse()。也许你做错了。你是怎么用的?
  • 我的函数得到了一个对象,当使用 JSON.stringify 警告这个对象时,这个给出的数组类似于问题中所示。
  • afaik,JSON.stringify 只会返回字符串。这就是它返回未定义的原因。您正在访问一个不存在的字符串属性。为什么不直接使用 obj.name 访问它?无需对其进行字符串化。
【解决方案3】:
  var xmlhttp = new XMLHttpRequest();

  xmlhttp.onreadystatechange=function(){
    if(this.readyState==4 && this.status==200){
      var data=JSON.parse(xmlhttp.responseText);
      console.log(data.e);
      console.log(data.e.name);
      console.log(data.e.id);
    }
  };

  xmlhttp.open('GET','a.json',true);
  xmlhttp.send();

和一个.json文件

{ "e":{ "name":"tushar", "id":"123", "tag":{} } }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多