【发布时间】:2016-10-13 13:11:48
【问题描述】:
我们有一个有趣的情况,我们将 json 作为字符串存储在 SQL Server 中。我们不在乎这个对象中有什么,它几乎是一个传递属性。直通意味着我们只是将其保存给客户并按原样返回。我们从未在 C# 中阅读过它。我将它作为 nvarchar 存储在数据库中,但我试图弄清楚如何自动将该字符串序列化为 json 对象以返回给客户端。我不想在javascript中调用fromJson。
我们使用 Newtonsoft 作为我们的 Json 序列化器。这是高级设置:
DTO:
public class MyDto{
public dynamic SessionBag { get;set;}
}
实体框架实体:
public class My{
public string SessionBag { get;set;}
}
客户会发布/放置我们:
{"SessionBag":{"Name":"test"}}
然后我们将它作为字符串保存在数据库中:
"{"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 非常简单,只需返回带有 dto 的 IHttpActionResult。欢迎所有反馈。
【问题讨论】: