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

wizard

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

Sanekk

Client
Регистрация
24.06.2016
Сообщения
988
Благодарностей
388
Баллы
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
Сообщения
989
Благодарностей
585
Баллы
93
это я знаю,
я уже обработал 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
Сообщения
989
Благодарностей
585
Баллы
93
Он там ругается на типы? Тогда так:
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
Благодарностей
651
Баллы
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
Сообщения
989
Благодарностей
585
Баллы
93
Прямого метода нет, можно через рефлексию, код ниже заносит в таблицу "Таблица 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
Благодарностей
651
Баллы
93

wizard

Client
Регистрация
04.10.2011
Сообщения
989
Благодарностей
585
Баллы
93

wizard

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

orka13

Client
Регистрация
07.05.2015
Сообщения
2 164
Благодарностей
2 164
Баллы
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
Сообщения
854
Благодарностей
246
Баллы
43
Ого. проблема с 2016 года. Столкнулся с этой же проблемой на релизе 5.29.1.0
 

VladZen

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

andrey-ka

Client
Регистрация
03.06.2018
Сообщения
854
Благодарностей
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 856
Баллы
113
Я из 2020 и такие же проблемы всё ещё присутствуют, а ещё так и не прикрутили к автокомплиту у json объектов методы:
C#:
List<string> GetMembersList()
Dictionary<string, string> GetAllMembersList()

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

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