@maxaprelsky
чуть ли не junior developer

Как вырвать из JSON(получаемого через http) значение одного параметра в .Net?

Посылаю запрос на сервер, сервер присылает http - ответ в формате JSON, как можно распарсить один элемент запроса, например guid, чтобы присвоить его нужной переменной?

{
	"channels" : 
[
		{
			"guid" : "sHyGfRs",
			"name" : "Name 1",
			"rights" : "783",
			"codec" : "h264",
			"have_ptz" : "0",
                }
]
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
  • arxont
    @arxont
    C# программист
    Как в комментариях уже сказали - используйте библиотеку Newtonsoft.Json.
    Дальше есть два способа
    (для примера тестовая строка выглядит так -
    string testJson = "{'name':'Test','response':1}";
    1. Через класс. Создаём класс, со списком параметров и делаем
    static void Main(string[] args)
            {
                string testJson = "{ \"channels\" : [ { \"guid\" : \"sHyGfRs\", \"name\" : \"Name 1\", \"rights\" : \"783\", \"codec\" : \"h264\", \"have_ptz\" : \"0\", } ] }";
    
                var result = JsonConvert.DeserializeObject<RootObject>(testJson);
    
                Console.WriteLine($"Name: {result.channels.FirstOrDefault().guid}");
            }
    
            public class Channel
            {
                public string guid { get; set; }
                public string name { get; set; }
                public string rights { get; set; }
                public string codec { get; set; }
                public string have_ptz { get; set; }
            }
    
            public class RootObject
            {
                public List<Channel> channels { get; set; }
            }


    2. Есть ещё способ с использованием dynamic (но у вас там массивы, так что категорически не рекомендую)
    static void Main(string[] args)
            {
                string testJson = "{'name':'Test','response':1}";
    
                dynamic resultDynamic = JObject.Parse(testJson);
    
                Console.WriteLine($"Name: {resultDynamic.name}, Response: {resultDynamic.response}");
            }
    Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы