所以我正在尝试将带有一些数据的容器对象序列化为 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