Json.net 如何返回序列化的JSON字符串,而无需从ASP.Net核心API进一步序列化

Json.net 如何返回序列化的JSON字符串,而无需从ASP.Net核心API进一步序列化,json.net,asp.net-core-2.0,Json.net,Asp.net Core 2.0,这个问题类似于,但稍微复杂一些 我有一个混合的内容,一些类如: public class ResponseModel { public Guid Id { get; set; } public DateTime TimesStamp { get; set; } // this is actually JSON serialized data, // which the function just passes through and doesn't need

这个问题类似于,但稍微复杂一些

我有一个混合的内容,一些类如:

public class ResponseModel
{
    public Guid Id { get; set; }
    public DateTime TimesStamp { get; set; }

    // this is actually JSON serialized data, 
    // which the function just passes through and doesn't need to understand
    public string Data { get; set; }
}
当前,响应将包含正确序列化的
Id
时间戳
,而
数据
将只是一个字符串,需要再次反序列化

相反,我希望
Data
只指向我设置为的“原始”json字符串,而不需要进一步转义它

我们不使用内容协商,我们只支持JSON请求和响应,所以这很好

我知道我可以将json字符串反序列化为动态对象,这是可行的,但是为什么要将字符串反序列化以再次序列化呢

所以我想要的是

public class ResponseModel
{
    public Guid Id { get; set; }
    public DateTime TimesStamp { get; set; }

    public object Data { get; set; }
}

但是不需要花费不必要的时间来反序列化并再次序列化json字符串的内容。

不可能。如果是字符串,您知道它是JSON,但是序列化程序无法知道这一点。然而,即使它能够以某种方式确定它是一个JSON字符串,它仍然需要在内部对其进行反序列化,以便在序列化整个过程之前将其处理到对象的其余部分——实际上与自己进行处理没有什么不同。

实际上,我可以将该字符串存储在自定义类型中(例如JSONSTANG)然后编写一些自定义的json.net过滤器或类似的(我只是简单地研究了一下),这样就完全有可能了。我只是希望有一个更简单的方法。我的意思是它不可能作为
字符串
。您是正确的,但同样,转换器将通过反序列化字符串来工作,因此您仍然在反序列化任何一种方式。