Как вернуть сериализованную строку JSON без дальнейшей сериализации из ASP.Net Core API - PullRequest
0 голосов
/ 31 мая 2018

Этот вопрос похож на Возвращает «сырой» json в 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; }
}

В настоящее время ответ будет содержать правильно сериализованные Id и TimeStamp, а Data будет просто строкой, которую необходимо десериализовать еще раз.

I 'Вместо этого мы хотим, чтобы Data просто указывал на «сырую» строку json, которую я установил, и не экранировал ее.

Мы не используем согласование содержимого, мы поддерживаем только запрос JSONи ответ, так что это было бы хорошо.

Я знаю, что мог бы десериализовать строку json в динамический объект, и это сработало бы, но почему строка должна быть десериализована просто для повторной сериализации?

Итак, я бы хотел что-то вроде

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

    public object Data { get; set; }
}

, но без необходимости тратить лишнее время на десериализацию и снова сериализацию содержимого строки json.

1 Ответ

0 голосов
/ 31 мая 2018

Не возможно.Если это строка, вы знаете, что это JSON, но сериализатор не может этого знать.Однако, даже если бы он мог каким-то образом определить, что это строка JSON, ему все равно нужно было бы внутренне десериализовать его, чтобы он мог обработать его до остальной части объекта, прежде чем сериализовать весь объект - фактически не отличающийся от того, как это сделал сам.

...