【问题标题】:WriteJson override with JSON.NET library用 JSON.NET 库覆盖 WriteJson
【发布时间】:2015-08-03 16:46:56
【问题描述】:

我做了一个简单的JsonConverter,因为我有一个页面发布了一个可以是泛型类型的 JSON 数组。

在我的自定义 JsonConverter 类中使用覆盖的 ReadJson 方法可以正常发布 JSON 数据并将其转换为类型化对象。

我还需要再次从数据库中读取数据,我会这样做:

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;
}

从那里它从数据库返回正确的对象。但是在return element 之后,在我的自定义JsonConverter 类中调用WriteJson json 覆盖方法。该方法如下所示:

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
    throw new NotImplementedException();
}

我不需要在WriteJson 方法中做任何特别的事情。因为从数据库返回的对象是好的。我只想让WebApi 将该对象转换为 JSON,一切都应该很好。

那WriteJson方法在我不需要做任何特别的事情时如何实现呢?

【问题讨论】:

  • @garryp 不知道你想说什么,这是 JSON.NET 代码? ^^ - “在使用 Mongo 和 Json 时不要使用类型化的对象?”还是那些行中的东西?

标签: c# asp.net-web-api json.net asp.net-web-api2


【解决方案1】:

覆盖 CanWrite 并返回 false:

    public override bool CanWrite { get { return false; } }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 2017-02-20
    • 2012-04-12
    • 2013-09-07
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    相关资源
    最近更新 更多