【问题标题】:json does not include object name during stingifyjson 在 stingify 期间不包含对象名称
【发布时间】:2013-05-22 03:14:39
【问题描述】:

我正在尝试使用 JSON.stringify() 方法将 javascript 对象转换为 json。我的问题是,当它刺痛对象时,它只刺痛对象的键和值。它不包括对象名称。

我想要像{"Color" : "{"Name":"background","Type":"Color","Value":"Red"}"} 这样的输出,但输出是{"Name":"background","Type":"Color","Value":"Red"}

Here is Demo .

我知道 json 是这样工作的,但我想要实现这一点的方法。提前致谢!

【问题讨论】:

  • 如您在此处看到的答案,您不能为您的对象指定名称,因为对象没有名称,在许多语言中只有types。对象的名称是另一个对象属性,您可以使用它来定义它,例如 id,或者如果它不是唯一的,则仅命名它。如果你想从对象中定义你的名字,你应该使用@JamesN 答案。您必须指定一个具有名为name 或任何您想要的属性的对象,定义另一个名为color 或任何您想要的属性,并将其添加为您的color 对象的值。这些是面向对象的基础知识。

标签: javascript jquery xml json dom


【解决方案1】:

对象不知道自己的名字,所以需要在 JSON 中显式命名:

JSON.stringify({'Color': color});

【讨论】:

  • 我做不到,因为我原来的层次结构非常大。每个对象都有很多孩子。还有孩子的孩子等等。所以我不能手动完成。这样做需要几天时间。
【解决方案2】:

您可以让createColor 函数返回一个对象,该对象的属性包含颜色对象:

function createColor() {
  var color = new Color();
  color.Name = "background";
  color.Type = "Color";
  color.Value = "Red";

  return { Color: color };
}

演示:http://jsfiddle.net/Guffa/hMwjq/5/

【讨论】:

    【解决方案3】:

    试试这个:

    (function () {
        var color = createColor();
        jsonObject = {};
        jsonObject.color = color;
        var json = JSON.stringify(jsonObject);
        console.log(json);
    })();
    

    full Demo

    【讨论】:

      猜你喜欢
      • 2012-04-20
      • 2020-05-05
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 2014-12-10
      相关资源
      最近更新 更多