Я перевожу приложение 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
. Это дает желаемый результат, но я бы хотел избежать ненужного шага десериализации + сериализации, поскольку объект данных может быть относительно большим.