删除JSON数据中的方括号,qoute之间除外

本文关键字:qoute 之间 方括号 JSON 数据 删除 | 更新日期: 2023-09-27 18:24:29

我使用的是根据这个改编的以下代码,所以回答

// 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"}
]

或小型化(在我的真实代码中)

[[{"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"}]

我必须承认,我并没有完全理解我所使用的正则表达式。

…现在我有两个问题。

删除JSON数据中的方括号,qoute之间除外

(?!^)'[(?=(?:[^"]*"[^"]*")*[^"]*$)|'](?!$)(?=(?:[^"]*"[^"]*")*[^"]*$)

试试这个。请参阅演示。替换为``。不要忘记标志。

http://regex101.com/r/zR2tR4/25