json по переменным

wizard

Client
Регистрация
04.10.2011
Сообщения
1 004
Благодарностей
632
Баллы
113
Подскажите как разложить json по переменным
C#:
try{
project.Variables["command"].Value = project.Json.command;
} catch{
project.Variables["command"].Value = "";
}
так не работает
вообще задача прогнать весь json и положить в соответствующие переменные (если они есть)
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63
Подскажите как разложить json по переменным
C#:
try{
project.Variables["command"].Value = project.Json.command;
} catch{
project.Variables["command"].Value = "";
}
так не работает
вообще задача прогнать весь json и положить в соответствующие переменные (если они есть)
http://zennolab.com/discussion/threads/json-c.31203/
p/s метод работает с v 5.10+
 
Последнее редактирование:

wizard

Client
Регистрация
04.10.2011
Сообщения
1 004
Благодарностей
632
Баллы
113
это я знаю,
я уже обработал json ... имею данные вида project.Json.xxxxx; - в этом нет проблемы
если обработать еще один json то все project.Json.xxxxx затрутся
по этому хочу сохранить нужные данные в переменные project.Variables["xxxxxx"].Value
 

AShaggy

Активный пользователь
Регистрация
25.11.2014
Сообщения
335
Благодарностей
143
Баллы
43
Он там ругается на типы? Тогда так:
C#:
project.Variables["command"].Value = project.Json.command.ToString();
 

wizard

Client
Регистрация
04.10.2011
Сообщения
1 004
Благодарностей
632
Баллы
113
Он там ругается на типы? Тогда так:
C#:
project.Variables["command"].Value = project.Json.command.ToString();
нет - опишу проблему, пример;
ожидаю 20 разных переменных в jsone
а приходит всего 5 и разлаживать их как Вы советуете нельзя
Код:
project.Variables["command"].Value = project.Json.command.ToString();
....
...
так как если не будет project.Json.command - будет ошибка ..
приходится городить это:
Код:
try{project.Variables["command"].Value = project.Json.command.ToString();}
catch
{project.Variables["command"].Value = ""}
....
....
вот и спрашиваю можно ли как- то это сделать в цикле , чтоб не городить 40 строк
Задача получить массив project.Json и разложить на ключ -> значение.
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
653
Баллы
93
нет - опишу проблему, пример;
ожидаю 20 разных переменных в jsone
а приходит всего 5 и разлаживать их как Вы советуете нельзя
Код:
project.Variables["command"].Value = project.Json.command.ToString();
....
...
так как если не будет project.Json.command - будет ошибка ..
приходится городить это:
Код:
try{project.Variables["command"].Value = project.Json.command.ToString();}
catch
{project.Variables["command"].Value = ""}
....
....
вот и спрашиваю можно ли как- то это сделать в цикле , чтоб не городить 40 строк
Задача получить массив project.Json и разложить на ключ -> значение.
Прямого метода нет, можно через рефлексию, код ниже заносит в таблицу "Таблица 1" то, что мы видим во вкладке жсон в ПМ.
C#:
var obj = project.Json;
Dictionary<string,string> jsonDict = obj.GetType().GetMethod("GetAllMembersList").Invoke(obj,null);
foreach(var el in jsonDict){
    project.Tables["Таблица 1"].AddRow(el.Key+";"+el.Value);
}
Вообще такой метод сделать бы открытым не помешало, ты уже 5й кто такое спрашивает.
 
  • Спасибо
Реакции: volody00, orka13 и wizard

wizard

Client
Регистрация
04.10.2011
Сообщения
1 004
Благодарностей
632
Баллы
113
Прямого метода нет, можно через рефлексию, код ниже заносит в таблицу "Таблица 1" то, что мы видим во вкладке жсон в ПМ.
C#:
var obj = project.Json;
Dictionary<string,string> jsonDict = obj.GetType().GetMethod("GetAllMembersList").Invoke(obj,null);
foreach(var el in jsonDict){
    project.Tables["Таблица 1"].AddRow(el.Key+";"+el.Value);
}
Вообще такой метод сделать бы открытым не помешало, ты уже 5й кто такое спрашивает.
Странно, но код отлично работает в PM и совсем не работает ZP

Не могу понять почему. Это глюк zenno ?
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
653
Баллы
93

wizard

Client
Регистрация
04.10.2011
Сообщения
1 004
Благодарностей
632
Баллы
113

wizard

Client
Регистрация
04.10.2011
Сообщения
1 004
Благодарностей
632
Баллы
113
вот разрабы всегда говорили что в PM и ZP все одно и тоже, я вижу другое
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Странно, но код отлично работает в PM и совсем не работает ZP

Не могу понять почему. Это глюк zenno ?
Ап. Та же проблема, в ProjectMaker находит элементы, а в ZennoPoster по нулям. Как исправить? Ошибки нет, визуально все ок отрабатывает.
UPD: пример проверочного самостоятельного кода для ленивых с выводом количества найденных элементов в лог:
C#:
List<string> List_Test = new List<string>();
project.Json.FromString(@"{""site"":[""far4i335.site"",""cl66i3.site""]}");
var obj = project.Json;
Dictionary<string,string> jsonDict = obj.GetType().GetMethod("GetAllMembersList").Invoke(obj,null);
foreach(var el in jsonDict){
  List_Test.Add(el.Value);
}
project.SendInfoToLog("нашло строк:" +List_Test.Count.ToString(),true);
 
Последнее редактирование:

andrey-ka

Client
Регистрация
03.06.2018
Сообщения
855
Благодарностей
246
Баллы
43
Ого. проблема с 2016 года. Столкнулся с этой же проблемой на релизе 5.29.1.0
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
C 2016 года у нас есть отдельный кубик для обработки JSON - https://zennolab.com/wiki/ru:json_xml
Как выглядит исходный json, который не раскладывается по переменным?
 

andrey-ka

Client
Регистрация
03.06.2018
Сообщения
855
Благодарностей
246
Баллы
43
C 2016 года у нас есть отдельный кубик для обработки JSON - https://zennolab.com/wiki/ru:json_xml
Как выглядит исходный json, который не раскладывается по переменным?
Кубик есть, да. Но кубиком неудобно пользоваться когда не знаешь что вернется в json'e и нужно проверять наличие ключей.

Код приведенный выше прекрасно раскладывается в PM, но не раскладывается в ZP. И это адски неудобно когда твой код работает в PM и не работает в ZP:
List<string> List_Test = new List<string>();
project.Json.FromString(@"{""site"":[""far4i335.site"",""cl66i3.site""]}");
var obj = project.Json;
Dictionary<string,string> jsonDict = obj.GetType().GetMethod("GetAllMembersList").Invoke(obj,null);
foreach(var el in jsonDict){
List_Test.Add(el.Value);
}
project.SendInfoToLog("нашло строк:" +List_Test.Count.ToString(),true);
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Я из 2020 и такие же проблемы всё ещё присутствуют, а ещё так и не прикрутили к автокомплиту у json объектов методы:
C#:
List<string> GetMembersList()
Dictionary<string, string> GetAllMembersList()

В моем случае вообще в json ключи в виде цифр: https://pastebin.com/d4ru4qbR
Я пытаюсь получить всех project.Json.globalObjects.users и метод GetAllMembersList вообще возвращает в этом случае пустой словарь.
 

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