【问题标题】:Issue deserializating JSON [duplicate]问题反序列化 JSON [重复]
【发布时间】:2017-10-06 13:41:06
【问题描述】:

我有一个 JSON 对象:

string bodyText = " {\"id\":16751112,\"firstname\":{\"value\":\"Sydni\",\"versions\":[{\"value\":\"Sydni\",\"source-type\":\"FORM\",\"source-id\":\"0eec9e33-4e82-4511-85ef-83556395e046\",\"source-label\":\"First Name\"}  ";

以及映射到 json 对象的类:

public class Person 
{
    public string firstname { get; set; }
    public string id { get; set; }
}

以下代码填充 id 属性,但不填充名字:

Person _Person = JsonConvert.DeserializeObject<Person>(bodyText);

有人可以帮我反序列化 json 字符串对象中的 firstname 元素并存储在我的 _Person 对象中吗?

【问题讨论】:

  • 也许,因为firstname 不是字符串,而是 JSON 中的属性?
  • firstname 在你的类中是一个string,在你的 json 中 firstname 属性是一个对象。
  • 我建议将您的 JSON 发布到 json2csharp.com 并让它为您生成正确的 Person C# 类。
  • @UweKeim 在 Visual Studio 中有一个工具,可以将 json 字符串作为 c# 类传递。 “编辑 -> 选择性粘贴 -> 将 JSON 粘贴为类”.
  • 至少是重复的

标签: c# json


【解决方案1】:

首先,您发布的JSON 不正确-没有关闭] 和两个}-应该是:

"{\"id\":16751112,\"firstname\":{\"value\":\"Sydni\",\"versions\":[{\"value\":\"Sydni\",\"source-type\":\"FORM\",\"source-id\":\"0eec9e33-4e82-4511-85ef-83556395e046\",\"source-label\":\"First Name\"}]}}"

另外,JSON 中的firstname 不是string,它是对象。

你的课程应该是:

public class Version
{
    public string Value { get; set; }
    public string Source-type { get; set; }
    public string Source-id { get; set; }
    public string Source-label { get; set; }
}

public class Firstname
{
    public string Value { get; set; }
    public IList<Version> Versions { get; set; }
}

public class Person
{
    public int Id { get; set; }
    public Firstname Firstname { get; set; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    相关资源
    最近更新 更多