#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. Спасибо, это работает. но можете ли вы объяснить регулярное выражение, даже сколько раз я его изучаю, я не могу прочитать регулярное выражение