我在 Azure Cosmos 数据库中有一个客户容器。按照标准数据建模建议将客户相关数据放入同一个容器中,分区键设置为“/CustomerId”,我在容器中同时拥有客户的信息和客户的销售订单对象。查询 SELECT * FROM c where c.CustomerId = 'CustomerABC' 返回以下 JSON 对象:
[
{
"CustomerId": "CustomerABC",
"type": "Customer",
"name": "ABC",
"location": "New York",
"id": "fce01d24-2e5f-4738-af93-9ce251339015",
"_rid": "XOQwAPL2q4QBAAAAAAAAAA==",
"_self": "dbs/XOQwAA==/colls/XOQwAPL2q4Q=/docs/XOQwAPL2q4QBAAAAAAAAAA==/",
"_etag": "\"0500751f-0000-1e00-0000-60607a6e0000\"",
"_attachments": "attachments/",
"_ts": 1616935534
},
{
"OrderId": "Order1",
"CustomerId": "CustomerABC",
"Type": "Order",
"Item": "Laptop",
"Total": 500,
"id": "3e8d7633-d2bf-4c0c-b494-632abc2cf44b",
"_rid": "XOQwAPL2q4QDAAAAAAAAAA==",
"_self": "dbs/XOQwAA==/colls/XOQwAPL2q4Q=/docs/XOQwAPL2q4QDAAAAAAAAAA==/",
"_etag": "\"05009120-0000-1e00-0000-606085860000\"",
"_attachments": "attachments/",
"_ts": 1616938374
},
{
"OrderId": "Order2",
"CustomerId": "CustomerABC",
"Type": "Order",
"Item": "Battery",
"Total": 125,
"id": "7d759ff2-20f7-4c7a-9885-00d1a2f6faeb",
"_rid": "XOQwAPL2q4QEAAAAAAAAAA==",
"_self": "dbs/XOQwAA==/colls/XOQwAPL2q4Q=/docs/XOQwAPL2q4QEAAAAAAAAAA==/",
"_etag": "\"05009220-0000-1e00-0000-6060858e0000\"",
"_attachments": "attachments/",
"_ts": 1616938382
}
]
此返回的 JSON 包含一个数组或多个项目。我会假设第一项始终是客户信息,但我不是 100% 确定。紧随其后的是同一客户的销售订单。我的问题是——因为它们不是相同的对象类型,你如何将此 JSON 映射到 C# 类对象,其中 C# 类可能是这样的:
public class CustomerOverview
{
public CustomerInfo Info { get; set; }
public List<CustomerOrder> Orders { get; set; }
}
我是否只需要遍历 JSON 中的每个项目并检查它的“类型”属性,然后手动将项目映射到我对应的 c# 对象?或者有没有更简单的方法来做到这一点?谢谢!