【发布时间】:2018-08-05 09:14:43
【问题描述】:
我正在从事一个项目,我一直在努力使代码尽可能模块化。
我现在想将对象保存/加载到 JSON,但是我不希望每个类都保存在数百个文件中,因为我希望 json 在一个地方为用户可读且易于编辑。
为了举例,这里是一个 C# 示例:
public class ObjectToBeSerialized
{
public float aNumber;
}
public class LinkingClass
{
public ObjectToBeSerialized linkedObject;
public string aString;
}
public class OtherLink
{
public ObjectToBeSerialized linkedObject;
public bool isThisObjectNice;
}
所以如果我序列化这个,我正在寻找的结果会是这样的:
{ "aNumber": 0, "aString": "Hello World", "isThisObjectNice": 真的}
因此,对于编辑 json 的人来说,它看起来像是 一个 对象,但在代码中它仍然是高度分离的一系列部分。
同样重要的是不要使用属性标签将 JSON 与代码分开。我正在寻找使用 ContractResolver 或类似的工具。
【问题讨论】:
-
到目前为止你有什么尝试?
-
@NielsNet 目前我基本上只是在构建 json 字符串,这显然非常混乱且难以维护。
-
在我看来你的想法是错误的。如果你有一个你想要序列化的对象,那么你最好有一个对 linkinClass 和 OtherClass 的引用。正如你提到的,你想把事情放在一起。
-
我假设“将 JSON 与代码分开”是指将其与域模型分开?这是一个好主意,在您的情况下,最简单的解决方案是创建一个特殊的轻量级类,该类看起来完全符合您希望 JSON 的外观,并手动将您的域对象映射到此类。
-
顺便说一下,
LinkingClass中的linkedObject可能与OtherLink类中的linkedObject不同——你如何选择序列化哪一个?
标签: c# json serialization json.net deserialization