Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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# 在ASP.NET Core 3.1中使用Newtonsoft.Json时,自定义JsonConverter属性不适用于Json.Serialize()_C#_Json_Asp.net Core_Json.net_Asp.net Core 3.0 - Fatal编程技术网

C# 在ASP.NET Core 3.1中使用Newtonsoft.Json时,自定义JsonConverter属性不适用于Json.Serialize()

C# 在ASP.NET Core 3.1中使用Newtonsoft.Json时,自定义JsonConverter属性不适用于Json.Serialize(),c#,json,asp.net-core,json.net,asp.net-core-3.0,C#,Json,Asp.net Core,Json.net,Asp.net Core 3.0,我想使用Newtonsoft Json.NET在ASP.NET Core 3.1应用程序中执行反序列化。我在启动配置服务代码中添加了以下内容: services.AddMvc().AddNewtonsoftJson(); 我有一个具有自定义序列化属性的MVC模型: public class MyModel { [Newtonsoft.Json.JsonConverter(typeof(MyCustomJsonConverter))] public DateTime MyProp

我想使用Newtonsoft Json.NET在ASP.NET Core 3.1应用程序中执行反序列化。我在启动配置服务代码中添加了以下内容:

services.AddMvc().AddNewtonsoftJson();
我有一个具有自定义序列化属性的MVC模型:

public class MyModel {
    [Newtonsoft.Json.JsonConverter(typeof(MyCustomJsonConverter))]
    public DateTime MyProperty {get; set;}
}
在我看来,我将其序列化为JSON:

<script>
    someJsFunction(@Json.Serialize(Model));
</script>
但它不使用MyCustomJsonConverter。在MyCustomJsonConverter中未命中断点

答案可能是添加到全局Json设置中:

services.AddMvc().AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.Converters = new List<JsonConverter>()
        {
            new MyCustomJsonConverter()
        };

    });
但是,MyCustomJsonConverter将应用于每个DateTime属性,而不仅仅是应用了该属性的属性。我还可以使用JSON.Serialize重载:

<script>
    someJsFunction(@Json.Serialize(Model, new JsonSerializerSettings()
                                           {
                                               Converters = new List<JsonConverter> { new MyCustomJsonConverter()},       
                                           }
                                  ));
</script>

但我不想每次打电话都这么做。我很确定这些JsonConverter属性在3.0版本中从Newtonsoft Json.NET转换之前运行良好。知道我做错了什么吗?

在您的视图中,为Newtonsoft添加using并使用其序列化程序

@using Newtonsoft.Json;

...

..(@JsonConvert.SerializeObject(Model))

原因是您使用的序列化程序来自不同的库,一个来自Microsoft.AspNetCore.Mvc.Rendering,另一个来自Newtonsoft.Json,在视图中为Newtonsoft添加using并使用其序列化程序

@using Newtonsoft.Json;

...

..(@JsonConvert.SerializeObject(Model))
原因是您使用的序列化程序来自不同的库,一个来自Microsoft.AspNetCore.Mvc.Rendering,另一个来自Newtonsoft.Json