我有一个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) '}';
}) '}';
});
};
|