Регулярные выражения C #: очистить плохую строку Json - PullRequest
0 голосов
/ 25 октября 2018

Я получаю ответ от сервера в виде такого JSON:

var zohozoho_atliview92 = {\"Itinerary\":[
 {\"Client_Email\":\"garymc\",
 \"Client_Name\":\"Gary\",
 \"NT_Number\":\"NT-1237\",\"Number_of_Nights\":7,
 \"ID\":\"24297940\",
 \"Itinerary_Name\":\"Icelandnights\",
 \"Tour_Template_Name\":\"Iceland FireDrive\",
 \"Departure_Date\":\"2018-07-04\"}
]};

Мне нужно удалить это: var zohozoho_atliview92 = {\"Itinerary\":[ и удалить последние 3 символа ]};, чтобы десериализовать его в моем объекте.

Как я могу сделать это с помощью регулярных выражений?Или есть лучший вариант?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

есть ли лучший вариант?

Да, вы можете разобрать вашу JSON-экранированную строку в JObject.

И затем вы можете получить доступ к любой паре ключ / значениеиз json с помощью Запрос JSON с помощью LINQ

Или вы можете сопоставить свой JObject с вашим пользовательским типом, используя var result = jObject.ToObject<T>();

class Program
{
    static void Main(string[] args)
    {
        var zohozoho_atliview92 = "{\"Itinerary\":[ {\"Client_Email\":\"garymc\", \"Client_Name\":\"Gary\", \"NT_Number\":\"NT-1237\",\"Number_of_Nights\":7, \"ID\":\"24297940\", \"Itinerary_Name\":\"Icelandnights\", \"Tour_Template_Name\":\"Iceland FireDrive\", \"Departure_Date\":\"2018-07-04\"}]}";

        JObject jObject = JObject.Parse(zohozoho_atliview92);

        Console.WriteLine(jObject);

        Console.ReadLine();
    }
}

Выход:

enter image description here

0 голосов
/ 25 октября 2018

Это не JSON, это Javascript (который объявляет объект JSON).

Регулярные выражения работают медленно, я бы посоветовал вам использовать подстроку

var start=inputString.IndexOf("[");
var end=("]");
var json=inputString.Substring(start, end-start);

Там могут быть некоторые изОдной ошибкой, проверить и исправить.Это было бы еще быстрее, но слабее, чем запуск жесткого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...