为什么我的 JSON 模型不解析仅适用于字符串列表?



我将以下JSON数据结构存储在文件中,我使用以下工具JsonToCsharp在C#中创建了一个JSON数据模型。通常,这个工具是完美的,让我成为很棒的数据模型,但这一次,由于未知的原因,每次我解析 JSON 内容时,所有字符串列表都是空的。

{
"Targets": [
{
"Name": "myTarget",
"Sharpmakes": [
{
"Name": "myTarget_v01",
"Dest": "/myTarget/folder/destination"
}
],
"Includes": [
"default_files" // <= This will always be null
]
},
{
"Name": "default_files",
"Directories": [
{
"Source": "/default/utils",
"Dest": "/utils",
"Includes": [ "*.bat", "*.ini", "*.txt", "*.xml", "*.json" ]   // <= This will always be null 
},
],
},
],
}

这是我用于解析 JSON 的代码:

try
{
var jsonContent = System.IO.File.ReadAllText(packageDefinitionJsonConfigPath);
return JsonConvert.DeserializeObject<Package>(jsonContent);
}
catch (Exception exception)
{
Log.Error($"Could not parse the json nn{packageDefinitionJsonConfigPath}");
throw exception;
}

这个代码片段没有什么特别之处,它是一个简单的NewtonSoft JSON解析。

这是我生成的模型,JsonToCsharp 给了我,(看起来很好(......

[JsonObject]
public class Package
{
[JsonProperty("Targets")]
public List<Target> Targets { get; set; }
}
public class Sharpmake
{
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("Excludes")]
public IList<string> Excludes { get; set; }
[JsonProperty("Dest")]
public string Dest { get; set; }
[JsonProperty("Includes")]
public IList<string> Includes { get; set; }
}
public class File
{
[JsonProperty("Source")]
public string Source { get; set; }
[JsonProperty("Dest")]
public string Dest { get; set; }
}
public class Directory
{
[JsonProperty("Source")]
public string Source { get; set; }
[JsonProperty("Dest")]
public string Dest { get; set; }
[JsonProperty("Includes")]
public IList<string> Includes { get; set; }
}
public class Target
{
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("Sharpmakes")]
public IList<Sharpmake> Sharpmakes { get; set; }
[JsonProperty("Includes")]
public IList<string> Includes { get; set; }
[JsonProperty("Files")]
public IList<File> Files { get; set; }
[JsonProperty("Directories")]
public IList<Directory> Directories { get; set; }
}
public class RootObject
{
[JsonProperty("Targets")]
public IList<Target> Targets { get; set; }
}

有谁知道为什么我的模型可以很好地适用于除字符串列表之外的所有内容?这个代码片段中没有什么特别之处,所以我在这里真的一无所知......

将我的软件包更新到最新版本的 Json.Net(12.0.2(似乎已经解决了这个问题

这将与发行说明修复相匹配

https://github.com/JamesNK/Newtonsoft.Json/releases/tag/12.0.2

相关内容

最新更新