Serialization Newtonsoft序列化与ASP.NET序列化

Serialization Newtonsoft序列化与ASP.NET序列化,serialization,asp.net-web-api,json.net,Serialization,Asp.net Web Api,Json.net,如果我有一个简单的类: public class UserId { public string Id { get; set; } } 然后我将其传递给HttpRequest.CreateResponse(),输出为: { "id": "1234bcf6678" } 但是,如果我使用JsonSerializer,我会得到: "{ \"id\": \"1234bcf6678\" }" 我知道第二个字符串实际上是一个json字符串,但如何使用JsonSerializer并将结果以获得第一

如果我有一个简单的类:

public class UserId
{
    public string Id { get; set; }
}
然后我将其传递给HttpRequest.CreateResponse(),输出为:

{ "id": "1234bcf6678" }
但是,如果我使用JsonSerializer,我会得到:

"{ \"id\": \"1234bcf6678\" }"
我知道第二个字符串实际上是一个json字符串,但如何使用JsonSerializer并将结果以获得第一个输出的方式传递给HttpRequest.CreateResponse()(即没有转义引号)

我知道有一个相关的问题,但我想使用Newtonsoft序列化程序,因为它允许我正确处理序列化一些通用列表和派生对象


对于额外的上下文,我在Azure函数中这样做可能是值得的。我看到Web API有
System.Web.Http.GlobalConfiguration
可用,但不确定函数是否可用。

当您使用JsonSerializer并返回结果字符串时,它将再次被序列化为Json。您必须绕过
HttpRequest.CreateResponse()
扩展方法,手动创建响应-这样,您可以自己设置内容和内容类型。一个有帮助的起点是查看(在第332行附近)。您可以使用媒体类型为“application/json”的
StringContent
,而不是使用
ObjectContent

ASP.Net在内部使用json.Net,您可以在应用程序启动时对其进行配置。您能更具体地说明ASP.Net没有返回正确输出的情况吗?我刚刚做了一个编辑。这是在Azure函数中,所以我不确定通过GlobalConfiguration是否具有与Web API中相同的覆盖可能性。感谢Andrew,这听起来是一种合理的方法。我在这里的一天就要结束了,所以我稍后会尝试,如果我得到了我需要的东西,我会标记为回答。如果不尝试,我就无法放松。解决方案是:var响应=新的HttpResponse(HttpStatusCode.OK);response.Content=新的StringContent();返回响应;谢谢你的指针。请注意,你可能需要将媒体类型显式设置为“application/json”-我很确定StringContent会将其设置为“application/text”。例如,当您使用jQuery使用输出时,这会有所帮助,因为它会自动解析json并返回一个对象,而不是字符串?我从未见过它被引用为application/json。W3联盟确实将
application/json
列为json数据的官方MIME类型。除此之外,没有什么真正的区别——几乎每个消费应用程序都会接受其中任何一个。