Есть в MSSQL табличка для хранения истории пользователя.
Туда "падает" все события вокруг пользователя, как то, что он делал (login, logout & ETC),
так и то, что с ним делали (например у него сменился адрес или привязка к роли).
Табличка содержит как несколько "строгих" полей — [дата события], [тип события], [идентификатор пользователя],
так и одно поле в формате JSON, которое содержит важную именно для этого [типа события] информацию.
В Backend (пока на NancyFX, но в планах миграция на .NET 5 WebAPI), при запросе к базе данных,
вытаскиваются данные в соотв. модель, где JSON-отформатированное поле, попадает в строковое свойство класса.
Вопрос:
Можно ли заставить Json.NET сериализовать эту модель так, чтобы JSON-свойство класса, в итоговый JSON попадало "as-is",
и порождался один большой, композитный JSON?
Re: Json.NET: Как заставить пре-форматированное JSON свойств
Здравствуйте, Yuri Abele, Вы писали:
YA>Вопрос: YA>Можно ли заставить Json.NET сериализовать эту модель так, чтобы JSON-свойство класса, в итоговый JSON попадало "as-is", YA>и порождался один большой, композитный JSON?
public class User
{
public string Name { get; set; }
public JRaw Data { get; set; }
}
var user = new User
{
Name = "user",
Data = new JRaw("{\"anonymous\": true}")
};
var s = JsonConvert.SerializeObject(user);
Console.WriteLine(s); // {"Name":"user","Data":{"anonymous": true}}
Если же хочется использовать string, то пишете нужный JsonConverter и навешиваете в виде атрибута на свойство
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Json.NET: Как заставить пре-форматированное JSON свойство сериализовать "
Здравствуйте, rameel, Вы писали:
R>Можно использовать JRaw
Да, это оно, то, что надо!
R>Если же хочется использовать string, то пишете нужный JsonConverter и навешиваете в виде атрибута на свойство
Да не, так устроит:
[JsonIgnore]
public string Message { private get; set; }
public JRaw Data => this.Message == null ? new JRaw(this.Message) : null;
Re[3]: Json.NET: Как заставить пре-форматированное JSON свойство сериализовать "
Y>this.Message == null ? new JRaw(this.Message) — что-то тут не так
Да, я уже сам заметил , спасибо!
Тут другая хрень какая-то! Поле Message часто бывает равное NULL.
Как мне сказать этому JRaw, чтобы он в этом случае рендерил null в результирующем JSON?
Что в таком случае:
public JRaw Data => new JRaw(this.Message);
что в таком
public JRaw Data => this.Message == null ? null : new JRaw(this.Message);
получается (если message=null) вот такая не JSON-Well-Formed фигня: