C# JSON 错误(将值"username"转换为类型时出错)



我得到一个JSON回复instagram和"序列化部分JSON片段"。

它 JSON 回复

{
  "access_token": "Here token",
  "user": {
    "username": "here user name",
    "bio": "her bio.",
    "website": "her website",
    "profile_picture": "http://images.ak.instagram.com/profiles/here picture",
    "full_name": "her name",
    "id": "and her id"
  }
}

我创建了一个类用户:

public class User
{
    public string id { get; set; }
    public string username { get; set; }
    public string full_name { get; set; }
    public string profile_picture { get; set; }
}

和序列化

JObject instaCall = JObject.Parse(responseString);
            IList<JToken> results = instaCall["user"].Children().ToList();
            foreach (JToken apiResult in results)
            {
                User searchResult = JsonConvert.DeserializeObject<User>(apiResult.ToString());
            }

并给了我一个错误:

将值"用户名"转换为键入时出错 'wpfApplication1.Control.BasicPage1+User'.路径 '',第 1 行,位置 10.

正如其他人所说,你不需要循环来获取你试图反序列化的 json。 从 json 仅转换用户对象的另一种方法:

JObject instaCall = JObject.Parse(responseString);    
User searchResult = instaCall["user"].ToObject<User>();

如果这是您的响应字符串,则不必循环访问列表即可取出对象。

User searchResult = JsonConvert.DeserializeObject<User>(instaCall["user"].ToString());

编辑

如果它有效,我可能会创建一个响应对象来处理反序列化清理器。

public class Response
{
    public string access_token { get; set; }
    public User user { get; set; } //your existing class
}

然后做

Response searchResult = JsonConvert.DeserializeObject<Response>("whole Response");
我认为

您的问题是您正在循环"用户"对象的子对象。因此,您最终会尝试将每个子对象("用户名"、"生物"等)转换为 User。

相关内容

  • 没有找到相关文章

最新更新