由于空格而反序列化Json问题

时间:2014-11-29 12:05:17

标签: javascript c# .net json json.net

我正在阅读Json文件并使用Newtonsoft.Json填充项目列表。我在读取一些Json文件时遇到问题,因为该属性的名称有空格,因此它与Item类的属性不同。

这很好。物品对象将分配以下值。

[
    {
        "FirstName": "John",
        "SecondName": "Smith"
    }
]

但我的Json文件是这样的,因此Item对象具有FirstName和SecondName的空值

[
    {
        "First Name": "John",
        "Second Name": "Smith"
    }
]

因此,具有FirstName和SecondName属性(见下文)的我的Item将获得一个空值。

public class Item
{

    private string firstName = "";
    private string secondName = "";

    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }

    public string SecondName
    {
        get { return secondName; }
        set { secondName = value; }
    }
}

有一种简单的方法可以解决这个问题。我无法控制namings(例如Json字符串中的FirstName或First Name。

2 个答案:

答案 0 :(得分:1)

这应该可以完成工作。

[DataContract]
public class Item
{
    private string firstName= "";
    private string secondName= "";

    [DataMember(Name = "First Name")]
    public string FirstName
    {
        get { return firstName; }
        set { firstName= value; }
    }

    [DataMember(Name = "Second Name")]
    public string SecondName
    {
        get { return secondName; }
        set { secondName= value; }
    }
}

如果这不够灵活,无法满足您的需求,则必须实施自定义格式 在此处阅读更多相关信息:WebApi Json.NET custom date handling

答案 1 :(得分:1)

如果您正在使用Json.NET,则可以使用JsonPropertyAttribute在JSON中指定属性的名称:

public class Item
{

    private string firstName = "";
    private string secondName = "";

    [JsonProperty("First Name")]
    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }

    [JsonProperty("Second Name")]
    public string SecondName
    {
        get { return secondName; }
        set { secondName = value; }
    }
}