Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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# 如何防止WebAPI中属性的序列化_C#_Asp.net Web Api_Json.net - Fatal编程技术网

C# 如何防止WebAPI中属性的序列化

C# 如何防止WebAPI中属性的序列化,c#,asp.net-web-api,json.net,C#,Asp.net Web Api,Json.net,我有一个模型类(实体框架)User,在执行Request.CreateResponse时,我不希望其“password”属性被序列化和发送 我在一篇SO帖子中读到,对于这种情况,属性中有一个[JsonIgnore],但出于某种原因,我的Visual Studio不知道如何解决它(我猜它不是来自web api库本身…?我对C#很陌生,但VS似乎不建议使用Ctrl+) 不管怎样,这里最好的建议是什么?如果可能的话,我不想仅为此制作DTO。您可以对要在序列化中隐藏的属性使用DataAnnotation

我有一个模型类(实体框架)
User
,在执行
Request.CreateResponse
时,我不希望其“password”属性被序列化和发送

我在一篇SO帖子中读到,对于这种情况,属性中有一个
[JsonIgnore]
,但出于某种原因,我的Visual Studio不知道如何解决它(我猜它不是来自web api库本身…?我对C#很陌生,但VS似乎不建议使用Ctrl+)


不管怎样,这里最好的建议是什么?如果可能的话,我不想仅为此制作DTO。

您可以对要在序列化中隐藏的属性使用DataAnnotation:

using Newtonsoft.Json

[JsonIgnore]
public string password {get; set;}

在每个要隐藏的属性上使用它。

保持模型与序列化或反序列化的方式隔离

如果要将特定字段返回给API使用者,则创建一个DTO,该DTO只包含方法应返回的数据


在这种情况下,您可以使用AutoMapper在DTO和实体类之间进行映射

使用[ScriptIgnore]复制您正在使用的Web API版本的可能副本?不同版本使用不同的JSON序列化程序,请参阅以获取详细信息。最近使用的脚本将尝试[ScriptIgnore],并在明天更新。