【问题标题】:How update JSON structure如何更新 JSON 结构
【发布时间】:2016-09-03 13:12:46
【问题描述】:

我的 JSON 文件中有一个非常复杂的 JSON 结构。该文件有许多记录。如果我想稍后添加一个字段/属性/数组,那么最好的方法是什么?我必须将它添加到每条记录中,对吧?

为了澄清更多:假设稍后我需要向我的主 JSON 结构添加一个额外的数组。是否有捷径可寻?或者,如果我的 JSON 文件中有 100 个记录/对象,我是否必须手动添加新字段/属性/数组? (不是说以编程方式进行。)

例如,假设这表示我的 JSON 文件中的一条记录...

  "devices": [
    {
        "deviceName": "ABC 6 Plus",
        "deviceShortName": "ABC6plus",
        "productId": "223311",
        "dropdowns": [
            {
                "dropDownText": "models:",
                "dropDownItems": [ "ABC6 Plus", "ABC6s Plus" ]
            },
            {
                "dropDownText": "logo:",
                "dropDownItems": [ "Exposed Logo", "Covered Logo" ]
            }
        ],
        "imagewidth": "400",
        "skinPositions": [
            { "side":  "4422" },
            { "top":   "3322" },
            { "bottom":   "1122" }
        ],
        "invalidSkins": [
            "yellow"
        ]
    }

假设我有一个包含 100 条记录的 JSON 文件。现在,我想将“productName”键/值添加到数据集。我必须手动将其添加到每条记录吗?

"productName": ""

或者是否有编辑器等...我可以快速完成此操作?我希望这是有道理的。

【问题讨论】:

    标签: jquery json


    【解决方案1】:

    首先你的问题需要进一步澄清。

    使用您最喜欢的编程语言获取所有 JSON 记录并在它们上循环,将这个字段添加到每个记录中,然后将它们写入您使用的任何存储(数据库、文件、..)。

    或者您可以通过从检索端处理未找到的异常来从另一端处理此问题。 例如:在检索时检查JSON记录是否有该字段,如果没有则不处理。

    【讨论】:

    • 如果您使用 Sublime Text 编辑器,您可以使用它的搜索和替换正则表达式功能,方法是在 find: (\{\s.*"deviceName": .*?,) 和 replace: $1\ n"productName": "",
    • 复制Sublime中的所有JSON记录,然后使用查找替换所有
    【解决方案2】:

    我假设记录是指记录数组。 由于您没有提及任何结构和您使用的语言,因此以这个为例:(javascript)

    var a = {};
    a.b = [];
    a.b.c = {}; 
    //a is populated
    

    现在 a 的结构是“a 具有属性 b,它是属性 c 的数组” 因此,如果您想将另一个属性“d”添加到“b”(b 的数组),您可以使用: forEach() 函数

    对于给出的示例,

    a.b.forEach(function(record){
      record['d'] = 'new property' //or anything
    })
    

    现在,“b”的每条记录都会有一个属性“d”。

    【讨论】:

    • 谢谢@Kandhan ....请参阅我澄清的OP。我不一定希望以编程方式执行此操作。
    • 我猜你必须以编程方式进行。就像我上面提到的那样,它的几行代码。
    猜你喜欢
    • 1970-01-01
    • 2020-09-02
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多