Есть ли эквивалент для JRaw в System.Text. Json - PullRequest
1 голос
/ 30 марта 2020

Я перевожу приложение ASP. NET Core 2 на ASP. NET Core 3. Мои контроллеры должны возвращать объекты, свойство которых уже является строкой JSON, поэтому выглядит примерно так:

public class Thing {
    public int Id { get; set; }
    public string Name { get; set; }
    public string Data { get; set; } // JSON Data
}

var thing = new Thing
{
    Id = 1,
    Name = "Thing",
    Data = "{\"key\":\"value\"}"
};

Thing следует сериализовать, чтобы свойство Data было не строкой, а частью объекта JSON. Например:

{
    "id": 1,
    "name": "Thing",
    "data": {
        "key": "value"
    }
}

In. NET Core 2 и Newtonsoft.Json Я использовал JRaw в качестве типа для Data, поэтому сериализатор знал, что свойство уже сериализовано как JSON и не пыталось представить его как строку.

. NET В Core 3 используется System.Text.Json, что несовместимо с JRaw. Есть ли эквивалент, который делает то же самое? Я смог использовать JsonElement в качестве типа для Data и преобразовать строку с JsonDocument.Parse(jsonString).RootElement. Это дает желаемый результат, но я бы хотел избежать ненужного шага десериализации + сериализации, поскольку объект данных может быть относительно большим.

...