.NET - 将包含数据的容器序列化为 JSON 时,如何隐藏容器



所以我正在尝试将带有一些数据的容器对象序列化为 JSON(使用 Newtonsoft 的 JSON.NET),我想隐藏包含数据的事实(因此序列化输出应该只是包含的数据,而不是容器)。

例:

class DataObject {
    public string MyProperty { get; set; }
}
class ContainerClass<T> {
    public T Data { get; set; }
}
var myObject = new ContainerClass<DataObject> {
                   Data = new DataObject { MyProperty = "test-data" }
               };

现在序列化为:

{ "Data": { "MyProperty": "test-data" } }

但是我想有以下输出:

{ "MyProperty": "test-data" }

我可以使用任何属性或其他方法(无需编写自己的自定义 JsonConverter 实现)来获取所需的 JSON 输出?

编辑:所以有一些关于序列化的问题。正如我所评论的,我正在使用 ASP.NET Web API,它将操作的结果序列化为 JSON。代码类似于以下内容:

abstract class BaseActionResult {}
class ContainerClass<T> : BaseActionResult { ... }
class ErrorResult : BaseActionResult { ... }
public class MyController : ApiController {
    [HttpGet]
    public BaseActionResult MyAction() {
        // ... do stuff
        if (error) return new ErrorResult();
        return new ContainerClass<DataObject> {
                   Data = new DataObject { MyProperty = "test-data" }
               };
    }
}

更改返回 JSON 的函数以返回序列化的数据对象而不是序列化的 ContainerClass

相关内容

  • 没有找到相关文章

最新更新