我使用的是从this so answer
改编的以下代码// remove outer bracket
JSONdata = JSONdata.Trim().Trim('[', ']');
// remove white space and line breaks except between double qoutes
JSONdata = Regex.Replace(JSONdata.Trim('"').Replace("\\\"", "\""), "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1");
// add back bracket
JSONdata = "[" + JSONdata + "]";
然后我得到这样的数据:
[
[
{"OptionChoice":14151,"OptionText":"Television"},
{"OptionChoice":14755,"OptionText":"Test[ something ]"}
]
,{"OptionChoice":361,"OptionText":"Yes"}
]
OR Minified(因为它在我的真实代码中)
[[{"OptionChoice":14151,"OptionText":"Television"},{"OptionChoice":14755,"OptionText":"Test[ something ]"}],{"OptionChoice":361,"OptionText":"Yes"}]
仅添加了空格和换行符。真实数据没有空格或换行符
我希望能够保留外括号,但删除不是双引号的内括号集。
编辑:预期输出
[
{"OptionChoice":14151,"OptionText":"Television"},
{"OptionChoice":14755,"OptionText":"Test[ something ]"},
{"OptionChoice":361,"OptionText":"Yes"}
]
缩小的:
[{"OptionChoice":14151,"OptionText":"Television"},{"OptionChoice":14755,"OptionText":"Test[ something ]"},{"OptionChoice":361,"OptionText":"Yes"}]
我必须承认我并不完全理解我所使用的正则表达式。
......现在我有两个问题。
答案 0 :(得分:1)
(?!^)\[(?=(?:[^"]*"[^"]*")*[^"]*$)|\](?!$)(?=(?:[^"]*"[^"]*")*[^"]*$)
试试这个。参见demo.Replace by``。不要忘记旗帜。