Десериализация строки JSON в реальный объект для условных данных только с использованием Newtonsoft c # - PullRequest
0 голосов
/ 11 мая 2018

Я работаю в проекте веб-API, где я сохранил список данных (List<someClass>) в cache в виде строки JSON. Этот объект кэша может иметь тысячи записей, иногда нам нужно получить немного записей из этого кэшированного списка, но поскольку данные, хранящиеся в кэше в виде строки JSON, мы должны сначала «десериализовать» их, а затем в преобразованном объекте (List<someClass>) мы ищем элемент с помощью Linq. Этот процесс без необходимости преобразует всю строку JSON в объект, чтобы получить только несколько элементов, которые я хочу настроить, если есть какой-либо способ Deserialize только значение условия в строке JSON.

В настоящее время я использую библиотеку Newtonsoft.Json для десерилизации.

    public static T ConvertToType<T>(string jsonResponse)
    {
        T result = default(T);
        result = string.IsNullOrEmpty(jsonResponse) ? result : JsonConvert.DeserializeObject<T>(jsonResponse);
        return result;
    }

Это образец строки JSON, которую я храню в cache

[
    {
        "ID": 1,
        "Code": "SAVE_SUCCESS",
        "Description": "Record successfully saved.",
        "Type": "0",
        "IsActive": "Y"
    },

    {
        "ID": 3,
        "Code": "SAVE_SUCCESS_PARAM",
        "Description": "{0} successfully saved.",
        "Type": "0",
        "IsActive": "Y"
    },

    {
        "ID": 8,
        "Code": "DUPLICATE_CHECK",
        "Description": "This {0} already exists.",
        "Type": "2",
        "IsActive": "Y"
    },

    {
       "ID": 12,
       "Code": "RESTORE_SUCCESS",
       "Description": "Record successfully restored.",
       "Type": "0",
       "IsActive": "Y"
    },

]

Предположим, в приведенной выше строке JSON, и я хочу получить только тот элемент, который имеет "Code": "DUPLICATE_CHECK", тогда сериализация должна происходить только для следующей части, и в результате я должен получить только одну запись в Списке или как отдельный элемент, насколько это возможно. .

{
    "ID": 8,
    "Code": "DUPLICATE_CHECK",
    "Description": "This {0} already exists.",
    "Type": "2",
    "IsActive": "Y"
}

Пожалуйста, предложите мне, если есть какой-либо способ сделать это.

...