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

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

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

{
	"channels" : 
[
		{
			"guid" : "sHyGfRs",
			"name" : "Name 1",
			"rights" : "783",
			"codec" : "h264",
			"have_ptz" : "0",
                }
]
  • Вопрос задан
  • 152 просмотра
Решения вопроса 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
Похожие вопросы