Показано с 1 по 3 из 3

Тема: SH5 Web API Выгрузка данных

  1. #1
    Новичок
    Регистрация
    15.05.2013
    Адрес
    Калининград
    Сообщений
    11
    Поблагодарил(а)
    2
    Благодарностей: 1 (сообщений: 1)

    SH5 Web API Выгрузка данных

    Добрый день! Решили выгрузку данных со SH5 запилить. Пишем на C#. Столкнулись с проблемой парсинга JSON ответов от API. Может кто-то сталкивался или создавал схожие объекты, подскажите как лучше распарсить JSON. Проблема заключается в следующем(процедура GoodsTree(номенклатура)), JSON пример:
    {
    "head": "111",
    "original": [
    "1",
    "4",
    "5",
    ],
    "fields": [
    "Rid",
    "Guid",
    "Options",
    ],
    "values": [
    [
    6,
    0,
    1,
    [
    "{0047B3AB-08B9-1D40-052C-D85868CC4F33}",
    "{15DB501E-DBBD-EB79-0E64-225FDBEA848E}",
    "{137555FA-DDDF-7AC3-9E61-AD1E0A5402EA}",
    ],
    [
    0,
    0,
    11,
    ]
    ]
    }
    Последний массив по сути содержит данные, но отображаются они не совсем классически для формата JSON, каждый из 3-ех массивов в массиве values, содержит часть данных. После парсинга приходиться перебирать эти массивы что бы получить объект:
    for(int x =0; x <Shtable.Count(); x++)
    {
    Value value=newValue
    {
    Rid=(long)values[0][x],// 6
    Guid=(string)values[1][x],// "{0047B3AB-08B9-1D40-052C-D85868CC4F33}"
    Options=(long)values[2][x]// 0
    }
    }
    Может быть есть более правильное решение для парсинга JSON из SH5?
    Последний раз редактировалось sin_39; 15.04.2019 в 18:48.

  2. #2
    Сведущий
    Регистрация
    23.12.2015
    Адрес
    Москва
    Сообщений
    62
    Поблагодарил(а)
    7
    Благодарностей: 43 (сообщений: 20)
    Не стоит закладываться на порядок полей [0],[1],[2]
    values
    [0][x],// 6
    values[1][x],// "{0047B3AB-08B9-1D40-052C-D85868CC4F33}"
    values[2][x]// 0

    Лучше предварительно определить индексы полей по идентификаторам из "original" . А потом уже цикл.

  3. 2 пользователей сказали cпасибо apetrov70 за это полезное сообщение:

    mnekin (16.04.2019),sin_39 (16.04.2019)

  4. #3
    Новичок
    Регистрация
    15.05.2013
    Адрес
    Калининград
    Сообщений
    11
    Поблагодарил(а)
    2
    Благодарностей: 1 (сообщений: 1)
    apetrov70 спасибо ОГРОМНОЕ, твой совет все расставил на свои места. Собственно реализация:

    Dictionary<string, int> dict = new Dictionary<string, int>();
    for (int x = 0; x < original.Length; x++) dict.Add(original[x], x);

    в дальнейшем в цикле обращаюсь по идентификатору из original
    values[dict["1"]][x],// 6
    values[dict["4"]][x],// "{0047B3AB-08B9-1D40-052C-D85868CC4F33}"
    values[dict["5"]][x]// 0

    поля описаны в мануалах по API. https://apidocs.ucs.ru/doku.php/ru:storehouse5:goods

  5. 1 пользователь сказал cпасибо sin_39 за это полезное сообщение::

    SH (23.04.2019)

Похожие темы

  1. Выгрузка данных в 1С)))
    от Индира в разделе OLE и обмен данными с 1С
    Ответов: 16
    Последнее сообщение: 05.04.2019, 10:44
  2. Выгрузка данных из SH4 в 1С
    от Maxtor в разделе OLE и обмен данными с 1С
    Ответов: 0
    Последнее сообщение: 17.10.2018, 09:45
  3. Выгрузка данных из R-Kepper7
    от Air2015 в разделе Связь R-Keeper 7 с внешними системами
    Ответов: 17
    Последнее сообщение: 26.06.2018, 22:31
  4. Выгрузка данных в r-keeper6
    от Zuev в разделе R-Keeper 6
    Ответов: 3
    Последнее сообщение: 02.12.2014, 12:47
  5. Выгрузка данных по закрытию дня
    от Druidik в разделе RK: Закрытие дня
    Ответов: 4
    Последнее сообщение: 21.10.2010, 12:14

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •