目标是读取/写入包含自定义属性的 json 文件。 典型的建议是使用 ExtensionDataObject 类。 但是,我在网上找不到任何有关如何实际读取/写入该对象数据的信息。 我使用以下 json 运行了测试:
{
"Hello": "World"
}
并且具有数据类型:
public class ExtData : IExtensibleDataObject
{
public ExtensionDataObject ExtensionData { get; set; }
public ExtData()
{
}
}
然后使用以下代码读取文件:
DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(ExtData));
ExtData ed = null;
using(StreamReader sr = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "\\test.json"))
{
ed = (ExtData)ds.ReadObject(sr.BaseStream);
}
调试时,如果我在“ed”赋值后应用断点 我可以看到此 ExtensionDataObject 的“Members”集合中有一个对象。 仅在调试时才能看到数据,不太理想。 是否有另一个类旨在读取/写入此数据?
目标是读取/写入包含自定义属性的 JSON 文件。典型的建议是使用
类。ExtensionDataObject
不!没有这样的建议。建议使用
ExtensionDataObject
来解决很多更复杂的问题:在生产中处理版本化数据合约时,当您至少有两个版本的数据合约时,较新版本通过添加新成员而不是增量修改旧版本合约在第一个版本中提出。欲了解更多详情,请更深入地阅读,并注意示例部分的解释。
在你的问题中提出你的要求时,没有这样的事情。您可以将所需的直接添加到您的
ExtData
,而不是从 ExtensionDataObject
派生。顺便说一句,给它一个更合适的名称,因为您的类用于数据图的根对象,所以它根本不是“扩展的”。
这可能不是您想要的。您没有正确解释您的最终目标。也许,您根本不需要任何数据协定,但想要读取任意 XML 数据。在这种情况下,您可以使用文档页面XML 处理选项中解释的选项。
另外,我确信这篇文章对您非常有用:https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem。