发布反序列化JSON

时间:2017-10-06 13:41:07

标签: c# json

我有一个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字符串对象中的fistname元素并存储在我的_Person对象中吗?

1 个答案:

答案 0 :(得分:3)

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

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

此外,firstname中的JSON不是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; }
}