我有一个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)
两者似乎都有效.我只是想得到一些其他意见.
我从人口普查局的公共场所获得了一个不规则的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位.