У нас есть забавная ситуация, когда мы храним json в виде строки в SQL Server. Нас не волнует, что в этом объекте является его довольно передовым свойством. Passthrough означает, что мы просто сохраняем его для клиентов и возвращаем его как есть. Мы никогда не читаем его на C#. Я храню его как nvarchar в базе данных, но я пытаюсь понять, как я могу автоматически сериализовать эту строку в json-объект, чтобы вернуться к клиенту. Я не хочу иметь в javascript звоните fromJson
.WEB.API возвращает свойство строки как json
Мы используем Newtonsoft в качестве нашего Json Serializer. Вот HighLevel установка:
DTO:
public class MyDto{
public dynamic SessionBag { get;set;}
}
Entity Framework Entity:
public class My{
public string SessionBag { get;set;}
}
клиент будет отправлять/поставить нас:
{"SessionBag":{"Name":"test"}}
Мы бы сохранить его в db в виде строки:
"{"Name":"test"}"
Как сериализовать это так, когда он возвращается из Web.API это выглядит следующим образом:
{
SessionBag:{
Name: "test"
}
}
В настоящее время я Мессинг вокруг, пытаясь заставить его сохранить, используя динамический/объект. Но я не могу понять, как вернуть его как объект json. Мне бы хотелось разобраться, как это сделать с помощью аннотаций.
Вот как преобразовать его в строку, чтобы сохранить:
if (dto.SessionBag != null){
var serializer = JsonSerializer.Create(new JsonSerializerSettings(){
NullValueHandling = NullValueHandling.Ignore
});
using (var writer = new StringWriter()){
serializer.Serialize(writer, dto.SessionBag);
entity.SessionData = writer.ToString();
}
}
В случае его полезные наши WebApiControllers довольно просты и просто возвращают IHttpActionResult с DTO. Вся обратная связь приветствуется.