小编Mot*_*aTL的帖子

评估DBNull:检查是否相等或使用'is'运算符?

我有一个C#问题.我只想向社区询问System.DBNull与使用DataReader的结合使用情况.

查询数据库并检查空值时,哪个更合适/更合适?

使用' is '运算符:

reader["fieldname"] is DBNull
Run Code Online (Sandbox Code Playgroud)

或只是检查价值:

reader["fieldname"] == DBNull.Value
Run Code Online (Sandbox Code Playgroud)

两者似乎都有效.我只是想得到一些其他意见.

.net c#

6
推荐指数
1
解决办法
3200
查看次数

首先使用C#Json.NET对带有变量名的Json数组进行反序列化

我从人口普查局的公共场所获得了一个不规则的JSON阵列.变量名都在第一个元素中,我无法反序列化它.

http://api.census.gov/data/2014/pep/agesex?get=AGE,POP,SEX&for=us:*&DATE=7

给我这样的JSON:

[["AGE","POP","SEX","DATE","us"],
["0","3948350","0","7","1"],
["1","3962123","0","7","1"],
["2","3957772","0","7","1"],
["3","4005190","0","7","1"],
["4","4003448","0","7","1"],
["5","4004858","0","7","1"],
["6","4134352","0","7","1"],
["7","4154000","0","7","1"]]
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法成功反序列化:

var test1 = JsonConvert.DeserializeObject<String[][]>(jsonStr);
Run Code Online (Sandbox Code Playgroud)

但是,我试图将它反序列化为这样的类:

public class TestClass
{
    public string AGE { get; set; }
    public string POP { get; set; }
    public string SEX { get; set; }
    public string DATE { get; set; }
    public string us { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样做:

var test2 = JsonConvert.DeserializeObject<TestClass[]>(jsonStr);
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

Newtonsoft.Json.dll中出现"Newtonsoft.Json.JsonSerializationException"类型的异常,但未在用户代码中处理

附加信息:无法创建和填充列表类型TestClass.路径'[0]',第1行,第2位.

c# serialization json json.net

2
推荐指数
1
解决办法
2217
查看次数

标签 统计

c# ×2

.net ×1

json ×1

json.net ×1

serialization ×1