Как конвертировать объект Json в объект класса C # - PullRequest
0 голосов
/ 08 марта 2019
{
    "users": [
        {
            "name": "User1",
            "email": "support@korewireless.com",
            "phone": "+12049987456",
            "status": "Active",
            "title": "Mr"
        },
        {
            "name": "User2",
            "email": "info@korewireless.com",
            "phone": "+12040147456",
            "status": "Active",
            "title": "Mr"
        },
        {
            "name": "User3",
            "email": "help@korewireless.com",
            "phone": "+12040787456",
            "status": "Active",
            "title": "Ms"
        }
    ]
}

Попытка Преобразование этого объекта json в Список, но он имеет только нулевые значения

var a = JsonConvert.DeserializeObject<User>(jsonData);

Как мне разобрать его в объекте класса?

Ответы [ 3 ]

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

Если вы хотите десериализовать эту конкретную строку json, вам нужно определить корневой объект, содержащий список ваших пользователей.

Например:

public class ListRoot
{ 
    public List<User> users { get; set; }
}

public class User
{ 
    public string name { get; set; }
    public string phone { get; set; }
    public string email { get; set; }
    public string status { get; set; }
    public string title { get; set; }
}

А теперь вы можете позвонить

var data = JsonConvert.DeserializeObject<ListRoot>(jsonData);
foreach (User u in data.users)
{
    Console.WriteLine($"User:name={u.name}, phone={u.phone}, email={u.email}");
}

Конечно, если вы можете контролировать производство данных json, у вас может быть гораздо более простой подход к подготовке данных json, подобный этому

[
    {
        "name": "User1",
        "email": "support@korewireless.com",
        "phone": "+12049987456",
        "status": "Active",
        "title": "Mr"
    },
    {
        "name": "User2",
        "email": "info@korewireless.com",
        "phone": "+12040147456",
        "status": "Active",
        "title": "Mr"
    },
    {
        "name": "User3",
        "email": "help@korewireless.com",
        "phone": "+12040787456",
        "status": "Active",
        "title": "Ms"
    }
]

, что дает вам возможность звонить напрямую

List<User> users = JsonConvert.DeserializeObject<List<User>>(jsonData);
1 голос
/ 08 марта 2019

Это зависит от вашего User класса.Пожалуйста, предоставьте код.

Ваш json больше похож на представление List<User>.Если это так, вы должны десериализовать с помощью JsonConvert.DeserializeObject<List<User>>(json).

1 голос
/ 08 марта 2019

Вы должны преобразовать в Список объектов, потому что ваш json - это перечисление пользовательских объектов.Например: var a = JsonConvert.DeserializeObject<List<User>>(jsonData);

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