JSON 从最后一个对象中删除尾随逗号
JSON Remove trailing comma from last object
此 JSON 数据正在动态插入到我正在处理的模板中。我正在尝试从对象列表中删除尾随逗号。
我正在使用的CMS使用Velocity,我还不太熟悉。因此,我希望编写一个JavaScript片段,以检测最后一个对象(ITEM2(上的尾随逗号并将其删除。是否有一个 REGEX 可以用来检测右括号之前的任何逗号?
[
{
"ITEM1":{
"names":[
"nameA"
]
}
},
{
"ITEM2":{
"names":[
"nameB",
"nameC"
]
}
}, // need to remove this comma!
]
你需要找到,
,之后没有任何新的属性、对象或数组.
新属性可以以引号("
或'
(或任何单词字符('w
(开头><。新对象只能以字符 .
开头{
新数组只能以字符 .
开头[
新的属性、对象或数组可以放在一堆类似空格的符号('s
(之后。
因此,正则表达式将是这样的:
const regex = /',(?!'s*?['{'['"'''w])/g;
像这样使用它:
// javascript
const json = input.replace(regex, ''); // remove all trailing commas (`input` variable holds the erroneous JSON)
const data = JSON.parse(json); // build a new JSON object based on correct string
尝试第一个正则表达式。
<小时 />另一种方法是找到每个,
,之后有一个右括号.
在这种情况下,右括号是}
和]
.
同样,右括号可以放在一堆类似空格的符号('s
(之后。
因此正则表达式:
const regex = /',(?='s*?['}']])/g;
用法是相同的。
尝试第二个正则表达式。
考虑 Json 输入 = [{"ITEM1":{"names":["nameA"]}},{">
ITEM2":{"names":["nameB","nameC"]}},] 没有空格。我建议使用子字符串的简单方法。
input = input.substring(0, input.length-2);
input = input + "]";
对于您的特定示例,您可以像这样进行简单的搜索/替换:
,'n]$
替换字符串:
'n]
工作演示
法典
var re = /,'n]$/;
var str = '[ 'n { 'n "ITEM1":{ 'n "names":[ 'n "nameA"'n ]'n }'n },'n { 'n "ITEM2":{ 'n "names":[ 'n "nameB",'n "nameC"'n ]'n }'n },'n]';
var subst = ''n]';
var result = str.replace(re, subst);
为此,我开发了一个简单但有用的逻辑 - 你可以试试这个。
Integer Cnt = 5;
String StrInput = "[";
for(int i=1; i<Cnt; i++){
StrInput +=" {"
+ " '"ITEM"+i+"'":{ "
+ " '"names'":["
+ " '"nameA'""
+ "]"
+"}";
if(i ==(Cnt-1)) {
StrInput += "}";
} else {
StrInput += "},";
}
}
StrInput +="]";
System.out.println(StrInput);
您可以使用正则表达式删除复杂 json 字符串中的尾随逗号
const regex = /,'s*([']}])/g;
const fixedJson = jsonString.replace(regex, "$1");
const json = JSON.parse(fixedJson);
``
提议的正则表达式方法存在问题。如果要规范化的 JSON 字符串是
var jstring = '{"a":"5,}", "z":{"x":2,}, "b":4,}';
然后应用 jstring.replace(regex, '')
也将删除字符串 jstring.a
= "5,}"
中5
后的逗号。这是不可取的。
另一种不诉诸正则表达式的方法是:
eval(`var result=${jstring}`)
JSON.stringify(result)
相关文章:
- 从输入值中删除最后一个单词
- 如何使用JavaScript forloop从JSON中删除最后一个逗号
- 如何在单击时从输入字段中删除最后一个字符
- 使用VBScript或Javascript从文本框(文本区域)中删除最后一行空/空行
- 删除最后一项jquery
- 正则表达式删除最后一个数字之后的字符串
- 从 Ol3 中的绘制交互中删除最后一个点
- 从路径中删除最后一个文件夹
- JavaScript-删除最后一个大写字母后的所有字符
- 从整数中删除最后一位数字
- 从网址中删除最后一个参数
- JavaScript图表.js删除最后一点
- Jquery- 动态添加字段 - 防止删除最后一个项目
- 从数组中删除最后一项
- 从网址中删除最后一个元素
- 使用jQuery删除最后一个手风琴
- 如何从字符串中删除最后一个和第一个空格
- 光滑的滑块删除最后一张幻灯片,如果 winWidth < 500
- 从完整的HTML页面jQuery中删除最后一个表的方法
- 使用 Javascript 或 jQuery 删除最后一个字符