如果我有一个json字符串(例如,从一个文件中读取),并且我的API返回字符串,Postman将把响应作为文本处理
app.MapGet("/myapi", () =>
{
var json = File.ReadAllText("file.json");
return json;
});
那么我怎样才能将内容类型强制为application/json呢?(请不要使用Newtonsoft)我可以使用这种变通方法,但是看起来很难看
app.MapGet("/myapi", () =>
{
var json = File.ReadAllText("file.json");
var jo = JsonSerializer.Deserialize<object>(json);
return Results.Json(jo);
});
谢谢
2条答案
按热度按时间hiz5n14c1#
您的“解决方法”是从最小API返回Json的正确方法。请查看
Results
类中可用的方法,以获得可用响应的完整列表。Results.Json()
是返回Json. IMO的正确响应,您的第二个技术并不“丑陋”,但是读取和反序列化Json的正确方法。不要担心将Json反序列化为对象只是为了再次序列化它的性能--如果它成为一个问题,您可以在此时解决它。如果您需要在返回它之前修改它,该怎么办?您可以在这种情况下,我们无论如何都需要反序列化它。我还要补充一点,理想情况下,您应该反序列化为一个定义的类,而不是
object
:解决方法
但是,您 * 可以 * 使用
Results.Text()
并指定内容类型:它在Postman中产生的结果与:
5m1hhzi42#
正确答案是:
@haldo的回答是不正确的,因为他说这是一个变通方法,但实际上不是。您已经有了JSON,并且希望输出相同的JSON而不做任何更改,您只是想告诉浏览器这是JSON。因此,这里没有变通方法,只是输出JSON内容的正确方法。