Десериализация неопределенных значений в c# - PullRequest
0 голосов
/ 26 января 2020

У меня есть json, как определено ниже,

{
    "ApplicationOne": {
        "Version": "1.0",
        "Owner": "coderClan"
    },
    "ApplicationTwo": {
        "Version": "2.0",
        "Owner": "gamers"
    }
}

Я пытаюсь реализовать такой метод, чтобы при передаче в качестве параметра идентификатора приложения (ApplicationOne, ApplicationTwo) владелец был возвращено

public static string GetOwner(string applicationID)
        {
            string owner = ""; //Deserialized Owner Name
            return owner;
        }

Проблема, с которой я столкнулся, заключается в том, что у меня нет возможности быть уверенным в идентификаторе приложения, так как его можно изменить? следовательно, я не могу создать классы POCO, как показано ниже:

public class ApplicationOne
{
    public string Version { get; set; }
    public string Owner { get; set; }
}

public class ApplicationTwo
{
    public string Version { get; set; }
    public string Owner { get; set; }
}

public class RootObject
{
    public ApplicationOne ApplicationOne { get; set; }
    public ApplicationTwo ApplicationTwo { get; set; }
}

Возможно ли еще десериализовать это? Буду очень признателен за пример того, как я могу реализовать это

1 Ответ

0 голосов
/ 27 января 2020

Вы можете сделать это с помощью Newtonsoft. Json, используя Dynami c:

dynamic deserialized = JsonConvert.DeserializeObject(json);
var result = deserialized["ApplicationOne"]?.Owner?.ToObject<string>();

И метод:

public static string GetOwner(string applicationID)
{
     return deserialized[applicationID]?.Owner?.ToObject<string>();
}
...