BsonDocument ExtraElements不返回所有项目

时间:2018-10-30 13:19:53

标签: c# json mongodb .net-core

我已使用MongoDB驱动程序2.7在C#中构建了以下内容:

班级:

public class Address
{
    [BsonId]
    public ObjectId Id { get; set; }
    public long Building_Number { get; set; }
    public BsonDocument ExtraElements { get; set; }
}

控制器:

[HttpGet("{number}")]
    public async Task<IActionResult> GetAddressByNumber(long number)
    {
        try
        {
            var address = _repository.GetAddressByNumber(number);

            if (address == null)
            {
                return new NotFoundResult();
            }

            return new ObjectResult(address);
        }
        catch(Exception ex)
        {
            return null;
        }

    }

当我对控制器运行API时,所有其他元素都按预期放置在ExtraElements中。

当ObjectResult将查询结果发送回浏览器时,仅显示第一项(使JSON无效)时发生问题:

{
"id":
    {
        "timestamp":1540553241,
        "machine":3884863,
        "pid":-2023,
        "increment":3833504,
        "creationTime":"2018-10-26T11:27:21Z"
    },
    "building_Number":12345,
    "extraElements":
        [
            {
                "name":"Element01",
                "value":
                    {
                        "bsonType":2,
                        "rawValue":"I",
                        "value":"I"

我收到了邮递员返回的404,但是我怀疑这是由于返回无效。

我不知道为什么可以将这些多余的元素正确地返回到C#API,而不能从控制器返回给调用者。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

看起来我的问题的答案很简单,如下所示:

return new ObjectResult(address.ToJson());

答案 1 :(得分:0)

我省略了有关我的项目正在使用.NET Core 2.0框架的信息。

事实证明,将项目更新到最新的.NET Core框架(2.1.5),比使用.ToJson()解决方案更好地解决了这个问题。