限制Azure表JSON响应上返回的对象属性

时间:2018-09-27 01:46:34

标签: c# class azure-table-storage

假设我有一个对象,当我在应用程序内部时,我想获取所有属性,但是我想限制从Web API发送回用户的某些属性。我的课程如下:

my_list: List[Weakref[MyObject]] = [weakref.ref(o1), weakref.ref(o2)]

因此,当我在应用程序中使用public class NodeModel : TableEntity { public NodeModel(string PK, string RK) { this.PartitionKey = PK; this.RowKey = RK; } public NodeModel() {} public string Value1 { get; set; } public string Value2 { get; set; } } 时,我想访问:

NodeModel

当我从Azure表返回查询时,我最终将发送所有属性,包括object.PartitionKey object.RowKey object.Value1 object.Value2 Timestamp值。我不确定这是否很重要,但我想知道如何限制发送回的邮件。例如:

ETag

我有一种方法,可以将入站JSON有效负载直接反序列化到我的object.PartitionKey object.RowKey object.Value2 中,然后简单地将其返回:

NodeModel

除了创建类型为string data = await req.Content.ReadAsStringAsync(); NodeModel nodeData = Newtonsoft.Json.JsonConvert.DeserializeObject<NodeModel>(data); return req.CreateResponse(HttpStatusCode.OK, nodeData) 的新对象,然后为每个对象手动设置属性外,给定getter / setter或public / private关键字还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以返回仅具有所需属性的匿名类型

string data = await req.Content.ReadAsStringAsync();
NodeModel nodeData = Newtonsoft.Json.JsonConvert.DeserializeObject<NodeModel>(data);
var responseData = new {
    nodeData.PartitionKey,
    nodeData.RowKey,
    nodeData.Value2
};
return req.CreateResponse(HttpStatusCode.OK, responseData);

或创建一个专门的类以充当DTO

NodeModel应该保留在应用程序内部,并且仅通过网络公开所需的内容。