使用 JSON.NET 库覆盖 WriteJson
WriteJson override with JSON.NET library
我做了一个简单的 JsonConverter
因为我有一个页面发布了一个 JSON 数组,它可以是通用类型。
发布 JSON 数据并将其转换为类型化对象在我的自定义 JsonConverter
class.
中使用覆盖的 ReadJson
方法工作正常
我还需要再次从数据库中读取,我是这样做的:
public Element GetElementById(ObjectId id)
{
return Db.GetCollection<Element>("Elements").Find(x => x.Id == id).FirstOrDefaultAsync().Result;
}
上述方法被WebApi
方法调用:
[HttpGet]
public Element GetElement()
{
var element = _elementService.GetElementById(new ObjectId("123e4567b4775f1c48bdabcd"));
return element;
}
从那里 returns 数据库中的正确对象。但是在 return element
之后 WriteJson
json 覆盖方法在我的自定义 JsonConverter
class 中被调用。该方法如下所示:
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
我不需要在 WriteJson
方法中做任何特殊的事情。因为从数据库返回的对象是好的。我只想让 WebApi
将该对象转换为 JSON,一切都应该很好。
那么在WriteJson
方法中不需要做任何特殊操作的情况下如何实现呢?
覆盖 CanWrite
和 return false:
public override bool CanWrite { get { return false; } }
我做了一个简单的 JsonConverter
因为我有一个页面发布了一个 JSON 数组,它可以是通用类型。
发布 JSON 数据并将其转换为类型化对象在我的自定义 JsonConverter
class.
ReadJson
方法工作正常
我还需要再次从数据库中读取,我是这样做的:
public Element GetElementById(ObjectId id)
{
return Db.GetCollection<Element>("Elements").Find(x => x.Id == id).FirstOrDefaultAsync().Result;
}
上述方法被WebApi
方法调用:
[HttpGet]
public Element GetElement()
{
var element = _elementService.GetElementById(new ObjectId("123e4567b4775f1c48bdabcd"));
return element;
}
从那里 returns 数据库中的正确对象。但是在 return element
之后 WriteJson
json 覆盖方法在我的自定义 JsonConverter
class 中被调用。该方法如下所示:
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
我不需要在 WriteJson
方法中做任何特殊的事情。因为从数据库返回的对象是好的。我只想让 WebApi
将该对象转换为 JSON,一切都应该很好。
那么在WriteJson
方法中不需要做任何特殊操作的情况下如何实现呢?
覆盖 CanWrite
和 return false:
public override bool CanWrite { get { return false; } }