【发布时间】:2014-11-11 16:36:48
【问题描述】:
我已经设置了一个 WebAPI 控制器,它返回一个数据集,该数据集在 SQL DB 上具有可为空的布尔值 (can_personalize)。
当我直接下载 .json 文件时,布尔属性包含数据(真/假)。当我使用 Newtonsoft JsonConvert.DeserializeObject() 时,每个对象的 can_personalize 属性值为 NULL。
我在其他几个类似的问题回答中尝试过建议,但没有一个对问题进行分类。
JSON 示例:
{
"$id": "1",
"$values": [
{
"$id": "2",
"TagTypeID": 1,
"tagIndex": 0,
"TagCategoryId": 1,
"validtagtypeid": 0,
"PrimaryTagTypeValue": "MC",
"PrimaryDescription": "Motorcycle - Standard",
"TagCategory": "StandardPlate",
"SecondaryTagTypeValue": "02",
"SecondaryDescription": "Personalized",
"TagEndDate": "9999-12-31T00:00:00",
"PrimaryEndDate": "9999-12-31T00:00:00",
"SecondaryEndDate": "12/31/9999",
"ValidRegex": "^[A-Z\\d -]{1,7}$",
"primarytagtypeid": 78,
"secondarytagtypeid": 2,
"can_personalize": true,
"ImageName": "redacted"
}
]
}
ADO.NET 模型生成的类:
public partial class ttGetTagListWithCategory_Result
{
public long TagTypeID { get; set; }
public int tagIndex { get; set; }
public Nullable<int> TagCategoryId { get; set; }
public int validtagtypeid { get; set; }
public string PrimaryTagTypeValue { get; set; }
public string PrimaryDescription { get; set; }
public string TagCategory { get; set; }
public string SecondaryTagTypeValue { get; set; }
public string SecondaryDescription { get; set; }
public Nullable<System.DateTime> TagEndDate { get; set; }
public Nullable<System.DateTime> PrimaryEndDate { get; set; }
public string SecondaryEndDate { get; set; }
public string ValidRegex { get; set; }
public Nullable<int> primarytagtypeid { get; set; }
public Nullable<int> secondarytagtypeid { get; set; }
public bool can_personalize { get; set; }
public string ImageName { get; set; }
}
JsonConvert 调用:
List<ttGetTagTypeListWithCategory_Result> tagTypeWithCategory =
JsonConvert.DeserializeObject<List<ttGetTagTypeListWithCategory_Result>>
(client.DownloadString(WebApiUtility.GetTagTypeListWithCategoryUri()));
【问题讨论】:
-
您能否显示您要反序列化的字符串、您要反序列化的类以及预期和实际输出?
-
我在原帖里加了
-
我还注意到 can_personalize 在类上不可为空......嗯
-
你能把你的调用添加到 DeserializeObject 吗?
-
如果这是您传递给
DeserializeObject的实际json,那么问题是您的集合是嵌套的。您没有将代表您的集合的部分传递给它,而是传递给它一个包含该集合的父对象。
标签: c# asp.net-mvc json.net asp.net-web-api