到 api/test,我将它存储在我的 m-6ren">
gpt4 book ai didi

c# - Web Api 返回扩展键值对象而不是原始 JSON 对象

转载 作者:可可西里 更新时间:2023-11-01 09:21:25 26 4
gpt4 key购买 nike

当我使用 POST{"name":"John Doe", "age":18, "country":"USA"} 发送到我的 C# Web API 时> 到 api/test,我将它存储在我的 mongo test 集合中并返回更新后的文档:

[HttpPost]
[Route("{collection}")]
public IHttpActionResult Upsert(string collection, HttpRequestMessage request)
{
var document = request.Content.ReadAsStringAsync().Result;
var doc = BsonDocument.Parse(document);
var result = new Db(collection).Upsert(doc).Result;
return Ok(result);
}

.

public async Task<BsonDocument> Upsert(BsonDocument document)
{
if (document.Contains("_id"))
{
await _collection.ReplaceOneAsync(w => w["_id"] == document["_id"], document);
}
else
{
await _collection.InsertOneAsync(document);
}
return document;
}

这行得通,但结果现在是一个键值对象:

[
{
"_name": "_id",
"_value": "56e9364d942e1f287805e170"
},
{
"_name": "name",
"_value": "John Doe"
},
{
"_name": "age",
"_value": 18
},
{
"_name": "country",
"_value": "USA"
}
]

我期望的是:

{
"_id": "56e9364d942e1f287805e170",
"name":"John Doe",
"age":18,
"country":"USA"
}

我怎样才能做到这一点?

最佳答案

您直接返回一个 BsonDocument,WebAPI 正在尽可能地序列化为 JSON,但不正确。

尝试调用 MongoDB.Bson.BsonExtensionMethods.ToJson 将其正确序列化为 JSON?

并返回原始 JSON:

return new HttpResponseMessage { Content = new StringContent(document.ToJson(), System.Text.Encoding.UTF8, "application/json") };

关于c# - Web Api 返回扩展键值对象而不是原始 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36033275/

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