Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用JSON.NET将数据集和数据表序列化为JSON时如何处理DBnull_C#_Wcf_Json_Serialization_Json.net - Fatal编程技术网

C# 使用JSON.NET将数据集和数据表序列化为JSON时如何处理DBnull

C# 使用JSON.NET将数据集和数据表序列化为JSON时如何处理DBnull,c#,wcf,json,serialization,json.net,C#,Wcf,Json,Serialization,Json.net,我得到以下错误: “StrongTypingException-表{TableName}中的列{ColumnName}的值为DBNull。” 当我尝试使用JSON.NET将带有一些空值的DataTable序列化为JSON时 代码如下: var dataSet= new DsGameInformatie(); var adapter = new GameTableAdapter(); adapter.FillByGameCategoryID(dataSet.Games, 1); var setti

我得到以下错误:

“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值以避免出现异常?

这是我使用的,默认情况下.Net做得很好。看看这是否适合您:

return Json(results, JsonRequestBehavior.AllowGet);
只需将IEnumerable传递给Json函数


希望有帮助。

这是我使用的,默认情况下.Net做得很好。看看这是否适合您:

return Json(results, JsonRequestBehavior.AllowGet);
只需将IEnumerable传递给Json函数


希望能有所帮助。

假设您的数据集来自数据集设计器,您可以更改它处理空值的方式


假设您的数据集来自数据集设计器,您可以更改它处理空值的方式


有一个与DataTables中的空值相关的错误,现在已在Json.NET 4.0版本3中修复


请参阅和相关问题。

有一个与DataTables中的空值相关的错误,现在已在Json.NET 4.0版本3中修复


请参阅和相关问题。

您可能必须在FillByGameCategoryID方法中执行此操作。您可以在那里编写自己的转换函数来处理null,并返回string.Empty。哪一行抛出了错误?您可能必须在FillByGameCategoryID方法中这样做。您可以在那里编写自己的转换函数来处理null,并返回string.Empty。哪一行抛出了您的错误?嘿,我尝试过您的方法,但我的编译器不识别Json和JSONRequestBehavior。您需要使用System.Web.Mvc添加一个
,这样才能工作。我应该说我没有使用Mvc。但是我导入了System.Web.Mvc库,它现在可以识别JSONRequestBehavior,但是它仍然不能识别“Json”(“然后它给了我一个错误:“在这里不能使用iternal方法”Json“)),但是我觉得我们已经达到了目标。感谢到目前为止所有的帮助,我让我的类从控制器继承,但现在它返回一个JsonResult,浏览器给我以下错误:Uncaught Sys.Net.webservicecfailedException:Sys.Net.webservicecfailedException:server方法“GetGames”失败,错误如下:嘿,我已经尝试过你的方法,但是我的编译器不识别Json和JSONRequestBehavior。你需要使用System.Web.Mvc添加一个
,这样才能工作。我应该说我没有使用Mvc。但是我导入了System.Web.Mvc库,它现在可以识别JSONRequestBehavior,但是它仍然不能识别“Json”(“然后它给了我一个错误:“在这里不能使用iternal方法”Json“)),但是我觉得我们已经达到了目标。感谢到目前为止所有的帮助,我让我的类从控制器继承,但现在它返回一个JsonResult,浏览器给我以下错误:Uncaught Sys.Net.webservicecfailedException:Sys.Net.webservicecfailedException:server方法“GetGames”失败,出现以下错误:这非常有用,对大多数值都有帮助,尽管我仍然得到了DateTime的一个例外。我无法更改DateTime类型的列的NullValue处理。我怎么能绕过这个问题呢?我从来没有尝试过,但是您可以将DateTime属性移动到DataSet的分部类的另一端。当我靠近一台装有C#编译器的机器时,我会尝试给你一个例子。这非常有用,它对大多数TS值都有帮助,尽管我仍然得到了DateTime的一个异常。我无法更改DateTime类型的列的NullValue处理。我怎么能绕过这个问题呢?我从来没有尝试过,但是您可以将DateTime属性移动到DataSet的分部类的另一端。当我靠近一台装有C#编译器的机器时,我会试着给你举个例子。我认为这是一个在.NET中与DBNull相关的bug,现在在Json.NET中可以避免?我认为这是一个在.NET中与DBNull相关的bug,现在在Json.NET中可以避免?