gpt4 book ai didi

c# - 可序列化对象排除我从客户端调用的公共(public)属性

转载 作者:行者123 更新时间:2023-11-28 08:14:17 24 4
gpt4 key购买 nike

我正在使用 Asp.net web api,我的模型类如下

[Serializable]    
public class Workspace
{
private string strID;
public string strName;

public string ID
{
get { return strID; }
set { strID = value; }
}

public string Name
{
get { return strName; }
set { strName = value; }
}

}

我在 Controller 中有以下 Get 方法

public Workspace GetWorkSpace()
{
if (objWorkspace == null)
{
objWorkspace = new Workspace();
objWorkspace.ID = Guid.NewGuid().ToString();
objWorkspace.Name = "Workspace 1";

}

return objWorkspace;
}

我正在尝试使用 Jquery 获取此对象,如下所示

var uri = 'api/workspace/GetWorkspace';
$(document).ready(function () {
$.getJSON(uri)
.done(function (data) {

$('#workspaceId').append(data.ID);
$('#workspaceName').append(data.Name);

});

});

我在数据中获取响应对象,但它排除了我的公共(public)属性“ID”和“名称”,如下所示

strID: "a0a523c6-f657-40df-b957-114b87de02f8"
strName: "Workspace 1"
__proto__: Object

如您所见,响应对象得到“strID和strName”,它们是模型类中的私有(private)变量,而应该是响应数据中的ID和Name,此外,如果我从模型类中删除 [Serializable] 属性,我将得到所需的结果。任何人都可以向我解释一下,以及我对 [Serialized] 属性做错了什么

您的帮助将非常感激

最佳答案

我使用自定义ContractResolver,设置:

public MyResolver()
{
IgnoreSerializableAttribute = true;
}

正如此处记录的 DefaultContractResolver.IgnoreSerializableAttribute Property :

true if the SerializableAttribute attribute will be ignored when serializing and deserializing types; otherwise, false.

如果您不打算实现自定义解析器,您可以这样做:

从该来源引用的片段:

((DefaultContractResolver)config
.Formatters
.JsonFormatter
.SerializerSettings
.ContractResolver
).IgnoreSerializableAttribute = true;

关于c# - 可序列化对象排除我从客户端调用的公共(public)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23805589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com