Я хочу вернуть идентификатор из списка json. Но он выдал ошибку - PullRequest
1 голос
/ 14 апреля 2020

Ошибка: невозможно десериализовать текущий JSON объект (например, {\ "name \": \ "value \"}) в тип 'System.Collections.Generi c .List`1 [System.Object] ', поскольку для корректной десериализации для типа требуется массив JSON (например, [1,2,3]). \ R \ nЧтобы исправить эту ошибку, либо измените массив JSON на JSON (например, [1,2,3]) или измените десериализованный тип так, чтобы он был нормальным. NET типом (например, не примитивным типом, таким как целое число, не типом коллекции, таким как массив или список), который можно десериализовать из JSON объект. JsonObjectAttribute также можно добавить к типу, чтобы принудительно десериализовать его из объекта JSON. \ R \ nPath 'исключение', строка 1, позиция 13

МОЙ код:

 using (WebClient wc = new WebClient())
            {
                wc.QueryString.Add("wstoken", "49345fa96c58118326b874bxxxxxx");
                wc.QueryString.Add("wsfunction", "core_user_create_users");
                wc.QueryString.Add("moodlewsrestformat", "json");
                wc.QueryString.Add("users[0][username]", member.uname);
                wc.QueryString.Add("users[0][auth]", "manual");
                wc.QueryString.Add("users[0][password]", member.password);
                wc.QueryString.Add("users[0][firstname]", member.fname);
                wc.QueryString.Add("users[0][lastname]", member.lname);
                wc.QueryString.Add("users[0][email]", member.email);
                wc.QueryString.Add("users[0][timezone]", member.timezone);
                wc.QueryString.Add("users[0][description]", member.tag);//tag for group name
                var response_data = wc.UploadValues(URI, "POST", wc.QueryString);

                var response = Encoding.ASCII.GetString(response_data);
                var k = JsonConvert.DeserializeObject<List<dynamic>>(response);
                foreach (var a in k)
                {
                    id = (a["id"]);
                }
                return id;

            }

Я хочу вернуть id снизу:

[{\"id\":38,\"username\":\"newuser30\"}]

1 Ответ

0 голосов
/ 14 апреля 2020

Я сделал это, и у меня это сработало:

string json = "[{\"id\":38,\"username\":\"newuser30\"}]";
dynamic [] stuff = JsonConvert.DeserializeObject<dynamic []>(json);

var id = stuff[0].id;
...