ReadAsAsync从Json数据中获取空值?

时间:2018-02-28 01:10:01

标签: c# asp.net json asp.net-web-api deserialization

我有一个班级

myfiles <- list.files("C:\\Documents\\R\\wd\\text", full.names = TRUE)

Filter(function(file) any(grepl("(Also)|(Bread)", readLines(file, warn = FALSE))),
       myfiles)

以下代码用于从web api中读取数据。

public class C
{
    public int Id { get; set; }
    public SqlXml Range { get; set; } // System.Data.SqlTypes.SqlXml
}

以下是从Web API返回的一些示例Json文件。

    List<C> cs = null;
    var response = await client.GetAsync(url);
    if (response.IsSuccessStatusCode)
    {
        cs = await response.Content.ReadAsAsync<List<C>>(); // cs[..].Range is null
    }

但是,变量[{"id":0,"range":{"isNull":false,"value":"<Range>....</Range>"}}, {"id":1,"range":{"isNull":false,"value":"<Range>...</Range>"}}, {"id":2,"range":{"isNull":false,"value":"<Range>....</Range>"}}] 得到以下值。 cs值是正确的。但是所有的Id都得到了空值?

Range

调试器显示0, null 1, null 2, null cs[...].Range.IsNull

1 个答案:

答案 0 :(得分:2)

System.Data.SqlTypes.SqlXml的属性是只读的。当反序列化程序尝试创建该类型的对象时,它将在尝试设置属性时失败。

创建您自己的类以保存所需的值

mongo.yml

现在应该允许public class Range { public bool IsNull { get; set; } public string Value { get; set; } } public class C { public int Id { get; set; } public Range Range { get; set; } } 值正确填充