Newtonsoft序列化与ASP.NET序列化

时间:2017-03-08 18:42:57

标签: serialization asp.net-web-api json.net

如果我有一个简单的课程:

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可用,但不确定函数是否可用。

1 个答案:

答案 0 :(得分:1)

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