【发布时间】:2015-11-17 11:45:18
【问题描述】:
我使用现有的 API,无法更改。
所以我有一些变量 - CellProviderID。
它看起来像是一个 int,因为当我设置 int 值时,服务器会返回预期的响应。
"CellProviderID":5,"CellProviderID2":7,"CellProviderID3":2
当我将此值留空并在序列化后我得到问题时出现:
"CellProviderID":0,"CellProviderID2":0,"CellProviderID3":0
因为 0 是 int 类型的默认值。并且服务器返回错误:
{"ErrorCode":10,"ErrorMessage":"指定了单元格提供程序,但单元格编号为空白,指定了寻呼机提供程序,但寻呼机编号为空白"}
所以它看起来更像是一些枚举,而 0 没有值。
当我从
更改序列化 json 时效果很好"CellProviderID":0,"CellProviderID2":0,"CellProviderID3":0
到
"CellProviderID":"","CellProviderID2":"","CellProviderID3":""
当我将此属性留空时,我应该如何初始化属性以便能够设置 int 值并获得“”?
[JsonProperty]
public int CellProviderID { get; set; }
[JsonProperty]
public int CellProviderID2 { get; set; }
[JsonProperty]
public int CellProviderID3 { get; set; }
【问题讨论】:
-
尝试将你的属性设为 int 类型怎么样?这样它们就可以为空(并查看序列化对此有何反应)
-
它们是整数。并且整数的默认值是 0 insted of null。
-
@iPogosov 他的意思是
int?,而不是带问号的int。int?是Nullable<int>的简写形式,这意味着类型可以是null或 一个int。也就是说,将您的属性更改为:public int? CellProviderID { get; set; }
标签: c# json serialization json.net