C# + JSON

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18
прикрепи сам json объект чтоб проверить.

C#:
string otvet = project.Variables["otvetApi"];//возьмем строку джисон в сниппет
JavaScriptSerializer ser = new JavaScriptSerializer();// создадим серелазер
Dictionary<string, dynamic> dict = ser.Deserialize(otvet);// обработаем строку джисон получим объект словарь
project.Variables["peremenProecta"] = dict["counts Vkontakte"];// возмем данные из словаря

/*
Dictionary<string, dynamic> может хранить в себе любые объекты, даже массивы,
так что обращаться к данным нужно соответсвенно, если есть массив значит
[n] - вернет элемент с индексом n
*/
чтобы заработало нужно подключить ссылку на сборку system.web.extensions.dll


и директиву
Что за ошибка такая?
Компиляция кода Ошибка в действии "CS0411" "Невозможно получить аргумент типа для метода "System.Web.Script.Serialization.JavaScriptSerializer.Deserialize<T>(string)" из данных использования. Попробуйте указать аргументы типа явным образом.". [Строка: 31; Cтолбец: 36]
И вообще подскажите я правильно понимаю?
Если у меня есть (я буду выражаться своими словами, уж простите если не правильно): многомерный (с вложениями) массив.
а именно он - https://line16.bkfon-resource.ru/live/updatesFromVersion/2043707898/ru
Я смогу через C# обращаться и получать сразу те данные которые мне нужны?
Например как то типа так:
есть у меня уже в проекте var srch_id = 123456789
в этом json есть всякие данные у которых содержится этот id и мне надо обращаться в определенную область массива в которой есть например такой кусок:
{"id":123456789,"kind":"sport","sortOrder":"+++3","name":"Волейбол"}
и из него мне надо получить предположим name

че нить типа такого:
var name = dict["sports"]["id"=srch_id ]["name"]

наверняка что такое можно делать, я то и не сомневаюсь )
но увидеть бы пример синтаксиса и пр. )
 

Вложения

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
держи
 

Вложения

  • Спасибо
Реакции: cardelis и nik-n

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
Последнее редактирование:

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18
выбирай из списка по значению
это как? сначала все складывать в списки, потом из них брать строку содержащую нужный мне текст, и уже из этой строки брать значение из нужно мне поля?
изначально я так и начал делать, просто раскидываю регулярками по спискам и регулярками же беру из списков нужные мне данные.
но это все долго и на куче кубиков.
я просто думал может проще как то можно.
как через xPath например, только по json массиву: типа взять конкретный элемент из массива, в котором другой элемент (не обязательно id) равен какому то тексту(или содержит его)
типа того что я писал:
есть у меня уже в проекте var srch_id = 123456789
в этом json есть всякие данные у которых содержится этот id и мне надо обращаться в определенную область массива в которой есть например такой кусок:
{"id":123456789,"kind":"sport","sortOrder":"+++3","name":"Волейбол"}
и из него мне надо получить предположим name

че нить типа такого:
var name = dict["sports"]["id"=srch_id ]["name"]
т.е. без лишних движений каких то такое возможно? без списков и пр.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
у тебя уже всё разложено, json всё разложил по полочкам
2019-05-18_193337.png


в коде есть циклы показаны для примера которые выводят в лог из списков, просто возьми строку нужную по значению из списка
 
  • Спасибо
Реакции: nik-n

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18
у тебя уже всё разложено, json всё разложил по полочкам
Посмотреть вложение 38742

в коде есть циклы показаны для примера которые выводят в лог из списков, просто возьми строку нужную по значению из списка
не совсем понятно, но поковыряюсь )

я разве кучу кубиков тебе предоставил ?
неее ) я ж не про тебя )
 

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18
мда... а можно пример? ))
синтаксис того как например получить team1 из Event по определенному id
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
разобрался ?
 

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18
неа)) а можно пример? ))
синтаксис того как например получить team1 из Event по определенному id
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18
а вообще для общего развития вопрос: в OwnCode это ты добавил подобное:
Код:
    public class EventBlock
    {
        public int eventId { get; set; }
        public string state { get; set; }
        public List<int?> factors { get; set; }
    }
или само записалось?
 

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
а вообще для общего развития вопрос: в OwnCode это ты добавил подобное:
Код:
    public class EventBlock
    {
        public int eventId { get; set; }
        public string state { get; set; }
        public List<int?> factors { get; set; }
    }
или само записалось?
я, само ничего не добавляется
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
да не ) надо понимать еще, что у меня нет глубокого понимания C# и работы zenno через C# кубики.
ну а с твоего кода кубиками тяжко вытащить нужное значение
 

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18

Вложения

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
  • Спасибо
Реакции: nik-n

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18
json всё сделал, просто выборку сделай, у тебя всё по полочкам разложено
так это ж я понял что выборку надо делать )
как только? синтаксиса не знаю.
да и сути происходящего тоже.
т.е. сейчас существуют списки получается?
получается дальше мне надо изучить как с этими списками работать на C# в zenno? верно?
но один хрен не понятно...
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
так это ж я понял что выборку надо делать )
как только? синтаксиса не знаю.
да и сути происходящего тоже.
т.е. сейчас существуют списки получается?
получается дальше мне надо изучить как с этими списками работать на C# в zenno? верно?
но один хрен не понятно...
ну типо да, человек тут всегда просит C#, упрощёно чтобы было, меньше кубиков, в одну строку, твоё дело просто взять из нужного списка нужную исттроку по значению, это не сложно
 

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18
ну типо да, человек тут всегда просит C#, упрощёно чтобы было, меньше кубиков, в одну строку, твоё дело просто взять из нужного списка нужную исттроку по значению, это не сложно
может мне проще на кубиках продолжить? и регулярками там уже )
просто я думал что можно будет по аналогии с xPath как то шпарить только не по DOM а по JSON массиву
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
может мне проще на кубиках продолжить? и регулярками там уже )
ну это твоё дело, я шаблон твой не скачивал, не знаю как он выглядит, просто предложил вариант свой
 

nik-n

Client
Регистрация
05.11.2016
Сообщения
242
Благодарностей
20
Баллы
18
ну это твоё дело, я шаблон твой не скачивал, не знаю как он выглядит, просто предложил вариант свой
но я вообще правильно понимаю?
единственный способ это в списке находить строку и из нее уже брать что надо?
просто одним запросом каким то сразу данные не возьмешь из нужной строки?
 

cardelis

Новичок
Регистрация
03.09.2019
Сообщения
9
Благодарностей
6
Баллы
3
Если не сложно, подскажите, пожалуйста
C#:
    public class RootObject
    {
        public int packetVersion { get; set; }
        public int fromVersion { get; set; }
        public int factorsVersion { get; set; }
        public int specialLineCatalogVersion { get; set; }
        public int siteVersion { get; set; }
        public List<Sport> sports { get; set; }
        public List<Event> events { get; set; }
        public List<EventBlock> eventBlocks { get; set; }
        public List<EventMisc> eventMiscs { get; set; }
        public List<CustomFactor> customFactors { get; set; }
        public List<Announcement> announcements { get; set; }
    }
В данном случае, списки заполняются по наименованиям или по порядковым номерам совпадений?

К примеру, если ответ от сервера не будет содержать массив "events", но будет содержать "eventBlocks", то в таком случае данный код выдаст 0 или количество элементов eventBlocks?

C#:
project.SendInfoToLog("", "Количество строк -> Event -> " + sData.events.Count);
извиняюсь, если вопрос глупый)

Просто думаю, получится ли сделать по аналогии с выдачей от API VK, ответ от которого может содержать либо response либо error
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)