@maxaprelsky

Как вырвать из JSON параметр в .Net?

(..............................)
  • Вопрос задан
  • 313 просмотров
Пригласить эксперта
Ответы на вопрос 2
@rodion-m
Лаконичное решение - JsonPath:
https://www.newtonsoft.com/json/help/html/QueryJso...
JObject o = JObject.Parse(@"
{
  "channels" : 
[
    {
      "guid" : "sHyGfRs",
      "name" : "Name 1",
      "rights" : "783",
      "codec" : "h264",
      "have_ptz" : "0"
     }
]
}");
JToken guid = o.SelectToken("$.channels[0].guid");
Console.WriteLine(guid );

В качестве тестера удобно использовать сервис: jsonpath.com
Ответ написан
Комментировать
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}");
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы