Как можно разобрать в C # JSON с динамическим ключом, используя JSON.NET или любой другой пакет - PullRequest
0 голосов
/ 15 марта 2019

Привет, ребята, у меня проблема, как я могу проанализировать JSON с этими данными, потому что, как вы можете видеть ниже, ключ data_0 увеличивается, у меня возникла путаница, как я могу проанализировать его, используя мои модели

{
"status": {
    "connection_status": "successful",
    "operation_status": "successful",
    "Customer": {
        "data_0": {
            "id": "123321",
            "FirstName": "testFirstname",
            "LastName": "testlastname"
        },
        "data_1": {
            "id": "321123",
            "FirstName": "testFirstname",
            "LastName": "testlastname",
        }
    }
}
}

thisмоя модель

public class GetAccountBalanceResponseModel
{
    public Stat status { get; set; }
}

public class Stat
{
    public string connection_status { get; set; }
    public string operation_status { get; set; }
    public Custmer Customer { get; set; }
}

public class Custmer
{
    public Datas data { get; set; } -- i am having problem with this one 
}

public class Datas
{
    public string id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string email { get; set; }
    public string accountBalance { get; set; }
}

Ответы [ 2 ]

2 голосов
/ 15 марта 2019

Используйте Dictionary<string, Datas> для свойства Customer в Stat классе,

public class Stat
{
    public string connection_status { get; set; }
    public string operation_status { get; set; }
    public Dictionary<string, Datas> Customer { get; set; }
}

Использование:

GetAccountBalanceResponseModel model = JsonConvert.DeserializeObject<GetAccountBalanceResponseModel>(json);    

foreach (var item in model.status.Customer)
{
    Console.WriteLine("Key: " + item.Key);
    Console.WriteLine("Id: " + item.Value.id);
    Console.WriteLine("FirstName: " + item.Value.FirstName);
    Console.WriteLine("LastName: " + item.Value.LastName);
    Console.WriteLine();
}

Выход:

enter image description here

0 голосов
/ 15 марта 2019

Просто немного измените свой Stat класс:

public class Stat
{
    public string connection_status { get; set; }
    public string operation_status { get; set; }
    public Dictionary<string, Datas> Customer { get; set; }
}

Тогда вы можете использовать что-то вроде stat.Customer["data_0"].email

...