Почему моя модель JSON не анализируется, не работает только для списка строк? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть следующая структура данных JSON, сохраненная в файле, я создал модель данных JSON в C #, используя следующий инструмент JsonToCsharp .Обычно этот инструмент идеален и делает меня отличной моделью данных, но на этот раз, по неизвестной причине, каждый раз, когда я анализирую содержимое 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 \n\n{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; }
}

У кого-нибудь есть идея , почему моя модель могла бы работать отлично для всего, кроме моих списков строк? Там нет ничего необычного вэтот фрагмент кода, так что я на самом деле здесь ничего не понимаю ...

1 Ответ

1 голос
/ 19 сентября 2019

Обновление моего пакета до последней версии Json.Net (12.0.2), по-видимому, устранило проблему

, которая будет соответствовать исправлениям примечаний к выпуску

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...