我收到以下错误:
“StrongTypingException - 表'{TableName}'中列'{ColumnName}'的值为DBNull。”
当我尝试使用JSON.NET将带有一些空值的DataTable序列化为JSON时。
这是代码:
var dataSet= new DsGameInformatie();
var adapter = new GameTableAdapter();
adapter.FillByGameCategoryID(dataSet.Games, 1);
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore,
ObjectCreationHandling = ObjectCreationHandling.Replace,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Ignore
};
return JsonConvert.SerializeObject(dataSet.Games, Formatting.None, settings);
显然我做错了什么。我错过了什么吗?如何处理这些DBNull值以便我不会出现异常?
答案 0 :(得分:2)
DataTables中存在与null相关的错误,现在已在Json.NET 4.0 Release 3中修复
请参阅How can I deserialize an ADO.NET DataTable that contains null values using Json.NET?以及相关问题Null values should be represented as System.DBNull when deserializing a DataTable。
答案 1 :(得分:0)
假设您的DataSet来自DataSet设计器,您可以更改它处理空值的方式。
http://msdn.microsoft.com/en-us/library/ya91ataz(v=vs.80).aspx
答案 2 :(得分:-1)
这是我使用的,默认情况下.Net运行良好。看看这是否适合你:
return Json(results, JsonRequestBehavior.AllowGet);
只需将IEnumerable传递给Json函数。
希望有所帮助。