Чтение значений JSON из appvariables в ядре asp.net, когда узлы JSON различны на каждом уровне - PullRequest
0 голосов
/ 09 октября 2018

У меня есть образец JSON, ниже которого я предоставил файл appvariables.json.

{   "**Desc1**":
    {
        "Code": "Cd1",
        "Description": "Desc1"
      }
      "**Desc2**":
      {
       "Code": "Cd2",
        "Description": "Desc2"
      }
}

Если это был JSON с тем же именем узла (выделенный Desc1, Desc2), создающий класс и читающийэто было бы проще для меня.

Не могли бы вы подсказать, как это можно сделать.

Поскольку это требует динамического способа обработки, я не смог бы создать класс.

Я бы хотел прочитать JSON как есть из appvariables.Есть ли способ добиться этого в?Или, пожалуйста, предложите лучший способ справиться с этим.

1 Ответ

0 голосов
/ 09 октября 2018

Если вы просто хотите прочитать переменные из файла appvariables.json и связать значение со следующим классом:

public class Desc
{
    public string Code {get;set;}
    public string Description {get;set;}
}

просто используйте ConfigurationBuilder():

var config= new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appvariables.json", optional: false, reloadOnChange: true)
    .Build();
var v1=config.GetSection("Desc1").Get<Desc>();
var v2=config.GetSection("Desc2").Get<Desc>();

Редактировать

для извлечения нескольких Desc, вы можете использовать GetChildren():

var v= config.GetChildren()
    .Select(i=>i.Get<Desc>());

foreach(var i in v){
    Console.WriteLine($"Got a variable : {i.Code}---{i.Description}");
}

Редактировать2

Вы можететакже добавьте условие Where для фильтрации конфигураций, как вам нравится:

var v= config.GetChildren()
    .Where(i=>i.Key.StartsWith("Type"))
    .Select(i=>i.Get<Desc>());
...