如果我有一个简单的课程:
public class UserId
{
public string Id { get; set; }
}
我把它传递给HttpRequest.CreateResponse(),输出是:
{ "id": "1234bcf6678" }
但是,如果我使用JsonSerializer,我会得到:
"{ \"id\": \"1234bcf6678\" }"
我理解第二个实际上是一个json字符串,但是如何使用JsonSerializer并将结果从它传递给HttpRequest.CreateResponse()以获得第一个输出(即没有转义引号)?
我知道SO上有一个相关的问题,但我想使用Newtonsoft序列化程序,因为它允许我正确处理一些通用列表和派生对象的序列化。
对于额外的上下文,可能值得知道我在Azure Functions中执行此操作。我看到Web API有System.Web.Http.GlobalConfiguration
可用,但不确定函数是否可用。
答案 0 :(得分:1)
当您使用JsonSerializer并返回结果字符串时,它将被再次序列化为Json 。您必须绕过HttpRequest.CreateResponse()
扩展方法,并手动创建响应 - 这样,您可以自己设置内容和内容类型。一个有用的出发点是查看source code for CreateResponse
(它在332左右)。您可以使用ObjectContent<T>
,而不是使用StringContent
,媒体类型为“application / json”。