2017-04-24 38 views
1

我从一个API请求JSON的C#类名称用空格

"Top Uncommitted Spend": [ 
       { 
        "AccountID": 99999991, 
        "H1": "Liabilities", 
        "H2": "Top Uncommitted Spend", 
        "H3": "", 
        "SH1": "", 
        "Description": "FUEL (ATM,ATM FEE)", 
        "Count": 4, 
        "FrequencyDescription": "Mostly 17 Days", 
        "FrequencyDuration": "Ongoing", 
        "FrequencyDurationDate": "11Aug - 30Sep", 
        "FrequencyWeekday": "", 
        "FrequencyAmount": 116, 
        "FrequencyAmountRange": "(2-280)", 
        "TotalAmount": 464, 
        "TotalInAmount": 0, 
        "TotalOutAmount": 464, 
        "MonthlyAmount": 305.5481, 
        "GroupID": "128081-1241", 
        "Display": "FUEL", 
        "FrequencyExactness": "Mostly", 
        "FrequencyPeriod": "17 Days", 
        "ScoreEmployer": null, 
        "ScoreDirCr": null, 
        "ScoreWeekday": null, 
        "ScoreFrequency": null, 
        "ScoreAmount": null, 
        "ScoreTotal": 0 
       }, 

返回以下JSON类当我使用json2csharp生成我的课,我得到这个因为标签在名称中包含空格。

public class Liabilities 
{ 
    public List<Rent> Rent { get; set; } 
    public List<Periodic> Periodic { get; set; } 
    public List<NonPeriodic> __invalid_name__Non-Periodic { get; set; } 
    public List<TopUncommittedSpend> __invalid_name__Top Uncommitted Spend { get; set; } 
} 

当我删除了“__invalid_name__”,并从名称。我的解析但运行时抛出一个“对象引用未设置为对象的实例”错误。

我的问题是我如何取消这些以便在不删除空格的情况下获取数据?

+1

嗯,这显然是空的,因为你已经改变了属性名称,因此它没有被填充 - 我不明白这与问题有什么关系。检查序列化库的文档,了解如何将属性映射到不同的JSON属性名称。可能涉及添加属性。 – Rob

+0

试着问这个服务的老板 - mailto:[email protected] – anatol

回答

0

尝试先使用json2csharp删除空格以获取有效的c#类。然后用data annotation让模型联编程序识别它。

例子:

public class Liabilities 
{ 
    //removed other collections for simplicity 
    [JsonProperty(PropertyName = "Top Uncommitted Spend")] // <-- *add this* 
    public List<TopUncommittedSpend> TopUncommittedSpend { get; set; } 
} 

public class TopUncommittedSpend 
{ 
    public int AccountID { get; set; } 
    public string H1 { get; set; } 
    public string H2 { get; set; } 
    //removed for simplicity 
} 

现在,如果你使用下面做一个张贴到您的API控制器:

{ 
    "Top Uncommitted Spend": [{ 
      "AccountID": 99999991, 
      "H1": "Liabilities", 
      "H2": "Top Uncommitted Spend" 
     } 
    ] 
} 

它应该工作。

+0

真棒谢谢。这正是我所苦苦挣扎的。 –

相关问题