Разобрать массив JSON в массив объектов

Я знаю, что это, вероятно, очень тривиальный вопрос, но я не могу найти ответ в Интернете.

Представьте, что у меня есть JSON ниже

{"userId" : "myUser","sites" : ["site1", "site2"] }

Я хотел бы проанализировать его на объект С# User, но синтаксический анализатор RestSharp не может правильно проанализировать массив. Я попытался реализовать sites, как показано ниже:

public string[] sites = new string[5];

public List<string> sites;

но ничего не работает.

Для десериализации я использую

JsonDeserializer deserial = new JsonDeserializer();

User newUser = new User();

newUser = deserial.Deserialize<user>(response); --› ответ представляет собой объект IRestResponse.

Код правильно анализирует простые строки, такие как userId, но борется с массивами...

Что я делаю неправильно? Разве RestSharp не подходит для этого?

Что делать, если это массив объектов в Json, например

{"userImgs" : {"small": "https://myImage.co.uk/small", "large" : "https://myImage.co.uk/large"}}

Могу ли я просто иметь объект с объектом в качестве свойства, и синтаксический анализатор обработает это, если я реализую свой класс, как показано ниже?

Class User{

string userId;

UserImages userImg = new UserImages();

Спасибо


person aberforth    schedule 13.02.2021    source источник
comment
Я думаю, что вы в основном на правильном пути, и это, скорее всего, несоответствие имени свойства (сайтов) и того, что на самом деле в JSON. Можете ли вы проверить IRestResponse и посмотреть, что такое фактический json, и включить его?   -  person Daniel James Bryars    schedule 13.02.2021
comment
@DanielJamesBryars - я в основном скопировал свои атрибуты из Json с помощью Postman. И я также проверил имена, чтобы убедиться, что они одинаковы, и они... Я уверен в этом.   -  person aberforth    schedule 13.02.2021
comment
Я надеюсь, что это поможет вам: comment   -  person Serhii    schedule 13.02.2021


Ответы (1)


Я бы рекомендовал использовать newtonsoft.

    using Newtonsoft.Json;
    class User
    {
        public string userId { get; set; }
        public List<string> sites { get; set; }
    }
    static void Main(string[] args)
    {
        string response = "{\"userId\" : \"myUser\",\"sites\" : [\"site1\", \"site2\"] }";
        User obj = JsonConvert.DeserializeObject<User>(response);
    }
person Vivek Raj    schedule 13.02.2021
comment
да, это нормально, но я начал использовать RestSharp, и я уверен, что есть способ добиться этого без добавления новых библиотек. - person aberforth; 13.02.2021