3

我对 JSON 没有太多经验,我想知道这样的事情是否可行。

{
    "variable": "A really long value that will take up a lot of space if repeated",

    "array": [variable, variable, variable]
}

显然这是无效的,但我想知道是否有办法做到这一点。我尝试使用“变量”,但当然只是将数组项设置为字符串“变量”。我想这样做的原因是我需要在多维数组中重复长值,这会占用大量空间。

谢谢。

4

4 回答 4

2

如果您愿意在解析后对 JSON 进行一些后处理,那么您可以在数组中使用令牌值,并将解析后的令牌替换为变量。例子:

{
    "variable": "A really long value",
    "array": ["variable", "variable", "variable"]
}

然后,在您解析的代码中:

var obj = JSON.parse(str);
for (var i=0; i<obj.array.length; i++)
{
    obj.array[i] = obj[obj.array[i]];
}
于 2013-02-27T05:46:31.087 回答
2

您是否担心输出中的空间或从 JSON 创建的对象中的空间?在后一种情况下,字符串值可能会在解析发生时被合并。

如果您担心 JSON 的大小,那么您可能想要更改为另一种格式,或者对 JSON 中的字符串进行重复数据删除。

您可以在 JSON 数据中添加一个对象,将 ID 号映射到字符串,然后使用 ID 来表示字符串。

于 2013-02-27T06:04:10.470 回答
0

在纯 JSON 中没有办法做到这一点(完整的规范在这里)。

如果您想做类似的事情,您可能需要研究模板工具,例如Handlebars

于 2013-02-27T05:43:47.460 回答
0

you will get your answer here jason tutorial for beginners

example:
  var data={
    "firstName":"Ray",
    "lastName":"Villalobos",
    "joined":2012
  };
于 2013-02-27T05:45:03.947 回答