Обнаружение последовательных фигурных скобок в JToken

#c#

#c#

Вопрос:

У меня есть этот код ниже, используя JToken

Стоимость товара

{«clause_type»: [ «Общие форс-мажорные обстоятельства» ]}

         var itemJson = "{"   item   "}";
        JObject joItem = new JObject();
        joItem = (JObject)JsonConvert.DeserializeObject(itemJson);
 

вышеуказанное значение и код отлично работают.. Но иногда значение имеет последовательный curly brace

{{«clause_type»: [ «Общие форс-мажорные обстоятельства» ]}}

при десериализации это приводит к ошибке Invalid property identifier character: {. Path '', line 1, position 1

Есть ли способ удалить или проверить item , есть ли у него последовательный curly brace и удалить его ?.

Комментарии:

1. Исправьте json в его исходном коде, а не пытайтесь проанализировать недопустимый json

2. Если вы хотите избежать регулярных выражений, то вы можете использовать что-то подобное while(!string.IsNullOrWhiteSpace(item) amp;amp; item.Trim().IndexOf("{{",0)!=-1) item = new String(item.Skip(1).ToArray()); , оно просто обрабатывает начало строки, оставшаяся часть также должна быть реализована

Ответ №1:

Как указано в комментариях @00110001, рекомендуется сначала исправить json. Но если вы не можете, вы можете использовать это регулярное выражение для замены двух или более последовательных фигурных скобок на одну:

 string new_item = Regex.Replace(Regex.Replace(Item, "([{][{] )" ,"{"), "([}][}] )" , "}");
 

Комментарии:

1. Спасибо, это работает. но можете ли вы объяснить регулярное выражение, даже сколько раз я его изучаю, я не могу прочитать регулярное выражение