我尝试使用Newtonsoft.json为了反序列化json文件的汇编。 我有我的C#类对应的模式,工作很好。 如果我把所有的json文件放在一个,它反序列化没有任何问题,但我想有一些可读的文件。要做到这一点,我已经把它们分成了多个文件。反序列化多个json文件
当我这样做时,即使它们之间有链接,Newtonsoft.json也无法创建具有相应架构的完整模型。
例如,我有在应用下面的C#类和DataModel
象下面这样:
class Application
{
[JsonProperty("dataModel", NullValueHandling = NullValueHandling.Ignore)]
public DataModel dataModel { get; set; }
}
class DataModel
{
[JsonProperty("id", Required = Required.Always)]
public String id { get; set; }
}
和我的JSON反序列化是:
application.json:
{ "dataModel": {"$ref":"data.json"} }
data.json:
{ "$id": "dataModel", "id": "dataModel", }
我执行的代码行反序列化:
JsonConvert.DeserializeObject(File.ReadAllText(@"application.json"),
new JsonSerializerSettings {
PreserveReferencesHandling = PreserveReferencesHandling.None,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
后,我只是检查,如果我的应用程序有一个DataModel
,但我得到一个异常,告诉我,DataModel
为空 。
我不知道问题是因为Newtonsoft无法建立简单的json文件之间的链接,或者如果它是别的东西。 有一点帮助会受到欢迎:-)
当您尝试,它实际上会发生什么? – Abion47
Newtonsoft无法反序列化您的json文件,因为它无效json https://jsonlint.com/ –
具体来说,第二个文件的JSON由于第二个''dataModel“''末尾的额外逗号而无效。 – Abion47