分享

javascript – 将递增数字添加到JSON对象String以使它们唯一

 印度阿三17 2019-07-04

我有一个JSON对象作为String传递给我,但其String形式的Object包含重复的属性.我需要临时向属性添加递增数字,以避免重复JSON属性的问题.一旦我完成了对象的编辑,我将JSON.Stringify对象回到一个字符串并删除数字.

这是我传递的字符串:

{
    "View":{
        "Image":{
            "BackgroundImage":"Image.png",
             "Position":[0,0],
             "Width":320,
             "Height":480
        },
        "Button":{
            "BackgroundImage":"ButtonTop.png",
             "Position":[61,83],
             "Width":217,
             "Height":58
        },
        "Button":{
            "BackgroundImage":"ButtonBottom.png",
             "Position":[61,214],
             "Width":205,
             "Height":73
        },
        "TextField":{
            "BackgroundImage":"TextFieldLogin.png",
             "Position":[102,336],
             "Width":189,
             "Height":31
        },
        "Label":{
            "Position":[137,100],
             "Width":72,
             "Height":20,
             "Text":"Hi Steve",
             "FontSize":18,
             "Color":[0,0,0,1]
        },
        "Label":{
            "Position":[43,342],
             "Width":54,
             "Height":20,
             "Text":"Login:",
             "FontSize":18,
             "Color":[0,0,0,1]
        },
        "Label":{
            "Position":[115,234],
             "Width":54,
             "Height":20,
             "Text":"Button",
             "FontSize":18,
             "Color":[0,0,0,1]
        }
    }
}

以下是我希望输出的结果:

{
    "View_1":{
        "Image_1":{
            "BackgroundImage":"Image.png",
             "Position":[0,0],
             "Width":320,
             "Height":480
        },
        "Button_1":{
            "BackgroundImage":"ButtonTop.png",
             "Position":[61,83],
             "Width":217,
             "Height":58
        },
        "Button_2":{
            "BackgroundImage":"ButtonBottom.png",
             "Position":[61,214],
             "Width":205,
             "Height":73
        },
        "TextField_1":{
            "BackgroundImage":"TextFieldLogin.png",
             "Position":[102,336],
             "Width":189,
             "Height":31
        },
        "Label_1":{
            "Position":[137,100],
             "Width":72,
             "Height":20,
             "Text":"Hi Steve",
             "FontSize":18,
             "Color":[0,0,0,1]
        },
        "Label_2":{
            "Position":[43,342],
             "Width":54,
             "Height":20,
             "Text":"Login:",
             "FontSize":18,
             "Color":[0,0,0,1]
        },
        "Label_3":{
            "Position":[115,234],
             "Width":54,
             "Height":20,
             "Text":"Button",
             "FontSize":18,
             "Color":[0,0,0,1]
        }
    }
}

我如何使用javascript .replace()按需添加编号,然后根据需要删除编号?

解决方法:

这个怎么样?我同意其他声音,建议任何提供此“JSON”的人都有责任提供有效的语法,但除非这种可能性,这可能会让你开始:

function formatJSON(input) {
  return input.replace(/"([^"] ?)":{(. )}/g, function(string, key, value) {
    var dict = {};
    return '"'   key   '":{'   value.replace(/"([^"] ?)":{(. ?)}/g, function(string, key, value) {
      dict[key] = dict[key] == undefined ? 1 :   dict[key];
      return '"'   key   '_'   dict[key]   '":{'   formatJSON(value)   '}';
    })   '}';
  });
};

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约