简化JSON结构

Phi*_*hil 12 json

我有以下JSON结构,但我想知道是否有任何方法可以进一步简化它.可以以某种方式从所有条目中删除"成分"和"数量"以帮助减少它吗?

var cooking = {
            "recipes" : [
                {
                    "name":"pizza",
                    "ingredients" : [
                        {
                            "ingredient" : "cheese",
                            "quantity" : "100g"
                        },
                        {
                            "ingredient" : "tomato",
                            "quantity" : "200g"
                        }
                    ]
                },
                {
                    "name":"pizza 2",
                    "ingredients" : [
                        {
                            "ingredient" : "ham",
                            "quantity" : "300g"
                        },
                        {
                            "ingredient" : "pineapple",
                            "quantity" : "300g"
                        }
                    ]
                }
            ]
        };
Run Code Online (Sandbox Code Playgroud)

Zer*_*eus 15

是的,你可以简化一下:

var recipes = {
    "pizza": {
        "cheese": "100g",
        "tomato": "200g"
    },
    "pizza 2": {
        "ham": "300g",
        "pineapple": "300g"
    }
}
Run Code Online (Sandbox Code Playgroud)

一个解释:

  • 您的示例的顶级是单项对象:{"recipes": <...>}.除非这是一个实际上有其他项目的对象的简化版本,否则这是多余的.您的代码知道它发送/接收的内容,因此那里没有额外的信息.

  • {"recipes": <...>}对象的值是两项对象的数组,带有键"name""ingredients".每当你有这样的数组时,用对象替换它就更有意义(并且更紧凑).根据经验:

    如果在对象的数组的密钥可以被替换为"key""value"并且仍然是有意义的,替换用单个阵列{"key_name": <value>, ...}对象.

  • 同样的规则适用于您的[{"ingredient": <...>, "quantity": <...>}, ...]数组:每个对​​象都可以被键值对替换,并继续有意义.

最终结果是信息的这种表示长度为87个字符(删除了无关的空格),与原始的249个字符相比 - 减少了65%.