【问题标题】:How to return serialized JSON string, without further serialization from ASP.Net Core API如何返回序列化的 JSON 字符串,而无需从 ASP.Net Core API 进一步序列化
【发布时间】:2018-05-31 15:44:45
【问题描述】:

这个问题类似于Return "raw" json in ASP.NET Core 2.0 Web Api,但稍微复杂一些。

我有一个混合的内容,像这样的一些类:

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; }
}

目前,响应将包含正确序列化的IdTimeStamp,而Data 将只是一个需要再次反序列化的字符串。

我希望Data 只是指向我将其设置为的“原始”json 字符串,而无需进一步转义。

我们不使用内容协商,我们只支持 JSON 请求和响应,这样就可以了。

我知道我可以将 json 字符串反序列化为动态对象,这会起作用,但为什么要反序列化字符串以再次序列化?

所以我想要的是类似的东西

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

    public object Data { get; set; }
}

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

【问题讨论】:

    标签: json.net asp.net-core-2.0


    【解决方案1】:

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

    【讨论】:

    • 实际上,我可以将字符串存储在自定义类型(例如 JsonSting)中,然后编写一些自定义 json.net 过滤器或类似的东西(我只是简单地研究了一下),所以这绝对是可能的。我只是希望可能有更简单的方法。
    • 我的意思是这是不可能的 string。你是对的,但同样,该转换器可以通过反序列化字符串来工作,所以你仍然在反序列化任何一种方式。
    猜你喜欢
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多