JSON в таблицу

baracuda

Client
Регистрация
19.06.2013
Сообщения
790
Благодарностей
277
Баллы
63
Привет все, что то подтупливаю как json положить в таблицу с помощью кубика.

вопрос в правильности настройки...

вот код.

C#:
{"cp_r": {"code": "cp_r", "count": 2, "price": 20.0}, "qw_r": {"code": "qw_r", "count": 0, "price": 20.0}, "mr": {"code": "mr", "count": 4646, "price": 12.0}, "mr_r": {"code": "mr_r", "count": 10, "price": 15.0}, "qw": {"code": "qw", "count": 4158, "price": 10.0}, "ao": {"code": "ao", "count": 7598, "price": 1.0}, "ab": {"code": "ab", "count": 7746, "price": 1.0}, "ai": {"code": "ai", "count": 5427, "price": 2.0}, "dc": {"code": "dc", "count": 5557, "price": 1.0}, "fb": {"code": "fb", "count": 765, "price": 3.0}, "gl": {"code": "gl", "count": 3500, "price": 5.0}, "ig": {"code": "ig", "count": 3741, "price": 3.0}, "kt": {"code": "kt", "count": 7744, "price": 1.0}, "lm": {"code": "lm", "count": 7746, "price": 1.0}, "md": {"code": "md", "count": 7539, "price": 2.0}, "ms": {"code": "ms", "count": 5585, "price": 1.0}, "nf": {"code": "nf", "count": 7746, "price": 1.0}, "nk": {"code": "nk", "count": 6160, "price": 1.0}, "pp": {"code": "pp", "count": 6260, "price": 5.0}, "pm": {"code": "pm", "count": 7746, "price": 1.0}, "st": {"code": "st", "count": 7514, "price": 1.0}, "tg": {"code": "tg", "count": 3240, "price": 8.0}, "qq": {"code": "qq", "count": 7746, "price": 1.0}, "tk": {"code": "tk", "count": 7620, "price": 1.0}, "td": {"code": "td", "count": 7738, "price": 1.0}, "tw": {"code": "tw", "count": 7501, "price": 1.0}, "ub": {"code": "ub", "count": 7722, "price": 1.0}, "vi": {"code": "vi", "count": 4068, "price": 4.0}, "wc": {"code": "wc", "count": 7666, "price": 6.0}, "wm": {"code": "wm", "count": 7548, "price": 2.0}, "wa": {"code": "wa", "count": 3572, "price": 4.0}, "yh": {"code": "yh", "count": 5204, "price": 1.0}, "ll": {"code": "ll", "count": 7655, "price": 1.0}, "ya": {"code": "ya", "count": 5776, "price": 1.0}, "ym": {"code": "ym", "count": 7244, "price": 2.0}, "sb": {"code": "sb", "count": 7745, "price": 1.0}, "ai_r": {"code": "ai_r", "count": 242, "price": 4.0}, "am": {"code": "am", "count": 7745, "price": 5.0}, "as": {"code": "as", "count": 7746, "price": 2.0}, "av": {"code": "av", "count": 3769, "price": 1.0}, "av_r": {"code": "av_r", "count": 0, "price": 5.0}, "bp": {"code": "bp", "count": 7746, "price": 4.0}, "bd": {"code": "bd", "count": 7746, "price": 1.0}, "bt": {"code": "bt", "count": 7746, "price": 2.0}, "bg": {"code": "bg", "count": 7744, "price": 1.0}, "bb": {"code": "bb", "count": 6671, "price": 1.0}, "bc": {"code": "bc", "count": 7548, "price": 2.0}, "bo": {"code": "bo", "count": 7746, "price": 3.0}, "bx": {"code": "bx", "count": 7746, "price": 1.0}, "bm": {"code": "bm", "count": 7746, "price": 2.0}, "bk": {"code": "bk", "count": 7746, "price": 1.0}, "co": {"code": "co", "count": 7746, "price": 2.0}, "ch": {"code": "ch", "count": 7746, "price": 1.0}, "cn": {"code": "cn", "count": 7746, "price": 2.0}, "cs": {"code": "cs", "count": 7548, "price": 2.0}, "cp": {"code": "cp", "count": 7044, "price": 10.0}, "dd": {"code": "dd", "count": 7746, "price": 2.0}, "dp": {"code": "dp", "count": 7745, "price": 2.0}, "du": {"code": "du", "count": 7742, "price": 2.0}, "de": {"code": "de", "count": 7746, "price": 1.0}, "dr": {"code": "dr", "count": 7715, "price": 1.0}, "eb": {"code": "eb", "count": 7432, "price": 2.0}, "eb_r": {"code": "eb_r", "count": 298, "price": 6.0}, "fc_r": {"code": "fc_r", "count": 270, "price": 10.0}, "fb_r": {"code": "fb_r", "count": 45, "price": 6.0}, "fp": {"code": "fp", "count": 7746, "price": 3.0}, "gc": {"code": "gc", "count": 7746, "price": 1.0}, "gl_r": {"code": "gl_r", "count": 114, "price": 10.0}, "gi": {"code": "gi", "count": 7102, "price": 1.0}, "hp": {"code": "hp", "count": 7746, "price": 2.0}, "im": {"code": "im", "count": 7746, "price": 1.0}, "ig_r": {"code": "ig_r", "count": 197, "price": 5.0}, "kf": {"code": "kf", "count": 7739, "price": 1.0}, "ke": {"code": "ke", "count": 7645, "price": 2.0}, "ku": {"code": "ku", "count": 7746, "price": 3.0}, "ln": {"code": "ln", "count": 7664, "price": 1.0}, "mc": {"code": "mc", "count": 6226, "price": 2.0}, "mc_r": {"code": "mc_r", "count": 0, "price": 10.0}, "mv": {"code": "mv", "count": 7739, "price": 1.0}, "mm": {"code": "mm", "count": 7746, "price": 1.0}, "eo": {"code": "eo", "count": 7734, "price": 2.0}, "mo": {"code": "mo", "count": 7746, "price": 1.0}, "mz": {"code": "mz", "count": 7746, "price": 2.0}, "os": {"code": "os", "count": 7746, "price": 2.0}, "or": {"code": "or", "count": 7741, "price": 1.0}, "oz": {"code": "oz", "count": 7624, "price": 1.0}, "pp_r": {"code": "pp_r", "count": 297, "price": 13.0}, "px": {"code": "px", "count": 7746, "price": 3.0}, "ta": {"code": "ta", "count": 7745, "price": 1.0}, "rm": {"code": "rm", "count": 7746, "price": 1.0}, "sf": {"code": "sf", "count": 7746, "price": 1.0}, "sg": {"code": "sg", "count": 7741, "price": 2.0}, "sp": {"code": "sp", "count": 7746, "price": 2.0}, "si": {"code": "si", "count": 7746, "price": 1.0}, "sr": {"code": "sr", "count": 7746, "price": 1.0}, "sn": {"code": "sn", "count": 7547, "price": 1.0}, "tg_r": {"code": "tg_r", "count": 53, "price": 10.0}, "tv": {"code": "tv", "count": 7746, "price": 1.0}, "th": {"code": "th", "count": 7745, "price": 2.0}, "vi_r": {"code": "vi_r", "count": 260, "price": 5.0}, "vd": {"code": "vd", "count": 7746, "price": 1.0}, "wa_r": {"code": "wa_r", "count": 0, "price": 10.0}, "wb": {"code": "wb", "count": 7734, "price": 1.0}, "ya_r": {"code": "ya_r", "count": 247, "price": 2.0}, "zc": {"code": "zc", "count": 7739, "price": 1.0}, "bgp": {"code": "bgp", "count": 7746, "price": 1.0}, "ih": {"code": "ih", "count": 7746, "price": 1.0}, "au": {"code": "au", "count": 7747, "price": 2.0}, "vn": {"code": "vn", "count": 7747, "price": 1.0}, "vv": {"code": "vv", "count": 7739, "price": 1.0}, "dv": {"code": "dv", "count": 7747, "price": 1.0}, "kl": {"code": "kl", "count": 7746, "price": 2.0}, "ks": {"code": "ks", "count": 7747, "price": 1.0}, "lt": {"code": "lt", "count": 7745, "price": 2.0}, "mg": {"code": "mg", "count": 3717, "price": 1.0}, "mn": {"code": "mn", "count": 7747, "price": 1.0}, "mt": {"code": "mt", "count": 7747, "price": 1.0}, "pk": {"code": "pk", "count": 7256, "price": 1.0}, "pt": {"code": "pt", "count": 5259, "price": 1.0}, "sk": {"code": "sk", "count": 7698, "price": 1.0}, "sm_r": {"code": "sm_r", "count": 286, "price": 6.0}, "sm": {"code": "sm", "count": 7225, "price": 3.0}, "sa": {"code": "sa", "count": 7691, "price": 2.0}, "strh": {"code": "strh", "count": 2810, "price": 2.0}, "strh_r": {"code": "strh_r", "count": 135, "price": 6.0}, "ym_r": {"code": "ym_r", "count": 297, "price": 5.0}}
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 785
Благодарностей
2 444
Баллы
113
del
 
Последнее редактирование:
  • Спасибо
Реакции: baracuda

baracuda

Client
Регистрация
19.06.2013
Сообщения
790
Благодарностей
277
Баллы
63
Костыльно решить вопрос не проблема. тут больше хотелось бы через jsonpath

Вот очередной пример: как вытащить key ? кубиком. "цена":количество
C#:
{
  "5": {
    "vk": {
      "12.00": 16
    }
  }
}
Собственно перспектива, хочу осилить понимание как json "распарсить красиво" и в конкурсе поучаствовать.

Всё коды, это smshub то что отдаёт по get запросам
 
Последнее редактирование:

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 785
Благодарностей
2 444
Баллы
113
  • Спасибо
Реакции: Alexmd

baracuda

Client
Регистрация
19.06.2013
Сообщения
790
Благодарностей
277
Баллы
63
Я не про ваш вариант.. Я, решил это через костыли, "регуляркой". Но это совсем не чёрный пояс.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 785
Благодарностей
2 444
Баллы
113
Я не про ваш вариант..
Простите, видимо я действительно Вас не правильно понял и погорячился с ответом.
Верну код обратно, вдруг кому-то пригодится.

Допустим у нас имеется JSON такого вида в переменной project.Variables["json"].Value:
JSON:
{
"strh": {"code": "strh", "count": 2810, "price": 2.0},
"strh_r": {"code": "strh_r", "count": 135, "price": 6.0},
"ym_r": {"code": "ym_r", "count": 297, "price": 5.0}
}
И нам необходимо добавить в таблицу project.Tables["Таблица 1"] имя объекта и содержимое полей code, count, price.

Тогда, так как название объектов всегда могут быть разными, мы можем либо получать имена полей или сразу разобрать объекты например в какой-то словарь, где имена объектов будут ключами, а содержимое - объектами с нужными полями.

Объявить класс в обычном кубике мы не можем, из-за чего необходимо его создать в общем коде:
Общий код:
namespace ZennoLab.OwnCode {
    public class CommonCode {
        public static object SyncObject = new object();
    }

    public class Data{
        public string code;
        public int count;
        public decimal price;
        public Data (){
            code = string.Empty;
            count = -1;
            price = -1m;
        }
    
        public string[] Row (string key){
            return new[]{key, code.ToString(), count.ToString(), price.ToString()};
        }
    }
}
После этого, уже в кубике Свой C# код мы можем провести разбор в словарь и добавление в таблицу (перебирая в цикле каждый объект):
Занесение данных в таблицу:
var dic = Global.ZennoLab.Json.JsonConvert.DeserializeObject<Dictionary<string, Data>>(project.Variables["json"].Value);
foreach(var d in dic) {
    project.Tables["Таблица 1"].AddRow(d.Value.Row(d.Key));
}
Пример добавленных данных в таблицу:
78619
 

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