Работа с JSON. Часть 3.2. Введение в SimpleJSON.cs.
В прошлом уроке никто ДЗ не сделал, хоть я и не удивлен (Это интернет! Кто здесь делает домашки?) так чо проверки не будет (Вот вам!) и я сразу перейду к проблемам Newtonsoft.json.
Проблемы и недостатки Newtonsoft.json
Данный пакет, конечно очень удобен, например для создания сохранений для игр, (Monogame!) ведь так вы сами создаёте нужные классы. Однако, если вы работаете с большим количеством данных, а нужных классов у вас нет и нет возможности (деньги, лень, количество разработчиков, чаще лень) сделать их, то зачем их делать? Да, через работу в экземпляром намного легче, но всё же. Для решения этой проблемы к нам приходит SimpleJSON.cs (он же есть и на Java и Python) который вместо создания экземпляра по шаблону просто создает словарь (Dictionary
) с типом JSONNode
. Для работы с ним (в особенности в нашем случае) очень удобен цикл foreach
, который проходит по всем элементам массива или словаря. Делается это по следующей схеме:
string someJSON = "{ \"Name\":\"Andrei\", \"Gender\":\"Male\", \"Age\":23, \"Hobbies\":[{ \"Sports\": { \"Tennis\":true, \"Football\":false, \"Basketball\":false }, \"Design\":true, \"Coding\": { \"Freelance\":false, \"Outsourcing\":true, \"Opensourcing\":true }}]}"; var parsedData = JSON.parse(someJSON);
Теперь мы имеем переменную parsedData
, которая вышла парсингом JSON данных someJSON
. Как вы заметили, в SimpleJSON JSON парсится методом parse
класса JSON
. Попробуем узнать, занимается ли наш мужчина фринансингом и выведем это в консоль. Это делается с помощью квадратных скобок, т.е. в скобках мы пишем "путь" к нашим данным. В нашем случае Hobbies -> Coding -> Freelance:
Console.WriteLine(parsedData[Hobbies][Coding][Freelance]) //В консоль будет выведено false
Теперь будем использовать foreach
. Попробуем вывести на экран какими видами спорта занимается наш мужчина, а какими нет:
var Name = parsedData[Name] int i = 1; foreach(JSONNode r in parsedData[Hobbies][Sports]) { switch i { case 1 { Sport = "Tennis"; break; } case 2 { Sport = "Football"; break; } case 3 { Sport = "Basketball"; break; } } string Tennis = quot;That's {Name} is plays {Sport} is {r}"; i++; } //В консоли будет следующее: //That's Andrei is plays Tennis is true //That's Andrei is plays Football is false //That's Andrei is plays Basketball is false
Вы можете использовать это для создания бота Телеграмм, например. (намёк)
И на этом всё! Спасибо за внимание и удачного дня. Кстати, если вы хотите ещё, то обязательно заходите на мой Телеграмм канал! Тык!