我想从json列表返回ID。但是它给出了一个错误

问题描述 投票:0回答:1

错误:无法将当前JSON对象(例如{\“ name \”:\“ value \”})反序列化为类型'System.Collections.Generic.List`1 [System.Object]',因为该类型需要JSON数组(例如[ \ 1,2,3])以正确地反序列化。\ r \ n要解决此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化的类型,使其成为常规的.NET类型。 (例如,不是整数之类的原始类型,不是数组或List之类的集合类型),可以从JSON对象反序列化。也可以将JsonObjectAttribute添加到类型中,以强制其从JSON对象反序列化。\ r \ nPath'exception',第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\"}]
asp.net json moodle
1个回答
0
投票

我做到了,它对我有用:

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

var id = stuff[0].id;
© www.soinside.com 2019 - 2024. All rights reserved.