Доступ к вложенным значениям в json с использованием System.Text. Json - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть файл JSON, возвращенный из системы, которая выглядит следующим образом:

{
    "value1": "Hello",
    "value2": "World",
    "result":
    {
        "stats":
        {
            "count":"1"
        }
    }
}

Получение значений «Value1» и «Value2» не представляет проблемы. Тем не менее, я не могу получить «считать» - не в хорошем формате.

Это мой код:

class Program
{
    static void Main(string[] args)
    {
        string json1 = File.ReadAllText("test.json");
        var info = JsonSerializer.Deserialize<SnData>(json1);
        WriteLine("Value1: {0} , Value2: {1}",info.value1,info.value2);
    }
}
class SnData
{
    public string value1 {get; set;}
    public string value2 {get; set;}  
}

Как получить значение «счет»?

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Самый простой способ - скопировать структуру вашего json. Есть удобные сайты, которые могут сделать это для вас, такие как http://json2csharp.com/

class SnData
{
    public string value1 { get; set; }
    public string value2 { get; set; }
    public Result result { get; set; }
}

class Result
{
    public Stats stats { get; set; }
}

class Stats
{
    public int count { get; set; }
}
1 голос
/ 17 февраля 2020

Вы можете получить счет с помощью следующего кода:

public class SnData
{
    public string Value1 { get; set; }
    public string Value2 { get; set; }
    public Result Result { get; set; }

}
public class Result
{
    public Stats Stats { get; set; }

}

public class Stats
{
    public int Count { get; set; }
}

В основном:

 class Program
{
    static void Main(string[] args)
    {
        string json1 = File.ReadAllText("test.json");
        var info = JsonSerializer.Deserialize<SnData>(json1);
        WriteLine("Value1: {0} , Value2: {1}, Count {2}", info.Value1, info.Value2, info.Result.Stats.Count);
    }
}

Приведенный выше код будет просто копировать структуру json.

...