MathCollection - замена значений

  • Автор темы Автор темы Astraport
  • Дата начала Дата начала

Astraport

Client
Регистрация
01.05.2015
Сообщения
5 084
Реакции
4 632
Баллы
113
Я могу получить в MathCollection значения определенных полей JSON. С JSON как объектом тут пока не хочу работать потому что куча вложенных нодов - цикл в цикле и всё в цикле чтобы всё это разобрать.

C#:
Развернуть Свернуть Копировать
string str = "big json";
List<string> list = Regex.Matches(str, @"(?<=""text"":\ "").*?(?="",)").Cast<Match>().Select(m => m.Value).ToList();
Затем обрабатываем полученный список и теперь нужно заменить значения в тех же позициях.
Repalce тут вряд ли поможет.
Можно ли произвести замены на уровне строки? Что можете посоветовать?
 
Вариант 1. У Regex.Replace есть перегрузка, где в третий аргумент можно запихнуть функцию обработки значения
Вариант 2. У каждого объекта Match есть свойства Lenght и Index. Обратный цикл с делитом и инсертом
 
  • Спасибо
Реакции: Astraport
C#:
Развернуть Свернуть Копировать
string json = project.Variables["json"].Value;

int i = 0;
Func<Match, string> DoSomfing = delegate(Match m)
{
    string value = "новое значение: " + i.ToString();
    i++;
    return value;
};

MatchEvaluator myEvaluator = new MatchEvaluator(DoSomfing);
project.Variables["result"].Value = Regex.Replace(json, @"(?<=""text"":\ "").*?(?="",)", myEvaluator);
 
  • Спасибо
Реакции: BAZAg и Astraport
Вариант 1. У Regex.Replace есть перегрузка, где в третий аргумент можно запихнуть функцию обработки значения
Вариант 2. У каждого объекта Match есть свойства Lenght и Index. Обратный цикл с делитом и инсертом
Спасибо, попробую.
C#:
Развернуть Свернуть Копировать
string json = project.Variables["json"].Value;

int i = 0;
Func<Match, string> DoSomfing = delegate(Match m)
{
    string value = "новое значение: " + i.ToString();
    i++;
    return value;
};

MatchEvaluator myEvaluator = new MatchEvaluator(DoSomfing);
project.Variables["result"].Value = Regex.Replace(json, @"(?<=""text"":\ "").*?(?="",)", myEvaluator);
Интересная штука, никогда не пользовался. Спасибо.
 
На основе JSON сгенерить класс и уже в него десериализовать через Newtonsoft.Json
Вот генератор: https://jsonutils.com/

К сожалению, примеры не сохранились.
Ого, тоже интересная тема!
Я правда задачу уже решил регулярками. Надо попробовать тоже самое генерацией класса.
 
  • Спасибо
Реакции: Astraport
Вот пример, там просто:
Я вчера проверил, тот генератор классов хорошая штука, но в моём json есть ноды с одним и тем же названием, но вложенные друг в друга. Соответственно классы генерит с одинаковыми названиями. Придётся напильником много допиливать.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)