如何用JavaScript和swig获得相同的输出?

hzbexzde  于 2023-01-01  发布在  Java
关注(0)|答案(3)|浏览(123)
var json = {
"color" : {
    "off-white" : {
        "inactive" : 0,
        "instock" : 5,
        "prestock" : 49
    },
    "red" : {
        "prestock" : 50,
        "instock" : 10,
        "inactive" : 0
    }
  }
};

在JavaScript中,如果我这样做

for (var col in json.color) {
      result += col  + " = " + JSON.stringify(json.color[col].prestock)+ "\n";
  }

我可以得到"白色"和"红色"以及所有的子文档。
我做了同样的事情,但它不会给我同样的输出。我还能做什么?
要获得"灰白色"和"红色"的输出,我必须

{% for col in Object.keys(json.color) %}

但我无法访问子文档。
如果我做了

{% for col in json.color %}
<li>{{Object.keys(col)}}</li>

我得到

<li>"off-white", "red"</li>

我需要他们分开,就像:

<li>off-white</li>
<li>red</li>
stszievb

stszievb1#

在swig中,你可以不使用Object.keys而同时获得key和value:

{% for key, val in json.color %}
  <li>{{ key }} = {{ val.prestock }}</li>
{% endfor %}

这应该会给予与JavaScript示例中所要求的相同的结果。

rryofs0p

rryofs0p2#

在JavaScript中,您应该像这样

json.color.off-white  OR json['color']['off-white']

//它会给予你一个

{
   "inactive" : 0,
   "instock" : 5,
   "prestock" : 49
}

// check  alert(JSON.stringify(json.color.off-white));

这不会返回一个数组,因此您将无法循环通过它。
此外,您可以通过访问json.color.off-white.inactive之类的对象来获取inactive的值

vngu2lb8

vngu2lb83#

因此,要分别显示它们,我认为您需要执行以下操作:

{% for key in Object.keys(json.color) %}
  <li>{{ key }},{{json["color"][key]["prestock"]}}</li>
{% endfor %}

对不起,我想你已经有了颜色键。现在我更新代码,希望能起作用。

相关问题