【发布时间】:2017-11-21 13:17:08
【问题描述】:
我有一个 .Net Core 2.0 Web API,我在其中使用 MongoDB .net 驱动程序。
我有一个班级叫ListOfValues:
public class ListOfValues
{
public string ListName { get; set; }
public List<object> MetaData { get; set; }
}
我的控制器用于保存的端点是:
public class LovController : Controller
{
[HttpPost]
public async Task<IActionResult> Create([FromBody] ListOfValues lov)
{
if (!ModelState.IsValid)
return BadRequest();
await ldbContext.GetCollection<ListOfValues>("ListOfValues").InsertOneAsync(lov);
return CreatedAtAction("Create", new { Id = lov.Id });
}
}
我正在发布这些数据:
{
"listName": "test",
"MetaData": [{
"Name": "Text",
"FieldType": "TextBox",
"isActive": 1
}]
}
由于某种原因,当我查询数据库时,我看到了这个值:
{
"_id" : ObjectId("5a1421e644d7cb07a8d3c45d"),
"ListName" : "test",
"MetaData" : [
{
"_t" : "Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed",
"_v" : {
"Name" : {
"_t" : "JValue",
"_v" : []
},
"FieldType" : {
"_t" : "JValue",
"_v" : []
},
"isActive" : {
"_t" : "JValue",
"_v" : []
}
}
}
]
}
我知道如果我使用指定类型的列表(例如类或结构)它会起作用,但我需要该列表是动态对象,因为我不知道客户端可以发送哪些对象。
我需要做什么才能使数据库中保存的数据可读?
【问题讨论】:
-
您能否在 C# 中添加元数据类的示例?您的问题与 Newtonsoft.Json 有关;与MongoDB驱动无关。
-
我没有元数据属性的类。它应该是客户端发送的动态 JSON 数组。我的代码中什至没有对 Newtonsoft.Json 的引用,所以我不知道它为什么会出现在那里。
-
哦,我明白了。所以,您希望数据库中的数据与请求中的数据相同,对吧?
-
是的,不然以后拉不回来了。
标签: c# asp.net-web-api mongodb-.net-driver