Плавающее значение в парсинге JSON.

muhyrla

Client
Регистрация
31.07.2020
Сообщения
136
Благодарностей
7
Баллы
18
Здесь получаю огромный список в json - https://steamcommunity.com/profiles/76561198937364751/inventory/json/730/2

Мне лишь нужно вытащить всё из массива rginventory со значением id, а как правильно это сделать непонятно, потому-что что-то мешает(
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
А Вы пробовали воспользоваться экшеном Обработка JSON/XML? При обработке данных можно сразу указать JSONPath и в переменную проекта запишутся только нужные Вам данные.
Если я Вас правильно понял, то JSONPath нужен такой - rgInventory.*.
68061

68062
68063

P.S. Для тестирования JSONPath (и XPath) есть очень удобный инструмент - Конструктор X/JSON Path
 

muhyrla

Client
Регистрация
31.07.2020
Сообщения
136
Благодарностей
7
Баллы
18
А Вы пробовали воспользоваться экшеном Обработка JSON/XML? При обработке данных можно сразу указать JSONPath и в переменную проекта запишутся только нужные Вам данные.
Если я Вас правильно понял, то JSONPath нужен такой - rgInventory.*.


P.S. Для тестирования JSONPath (и XPath) есть очень удобный инструмент - Конструктор X/JSON Path
Спасибо, а как запихнуть это всё в список? Если парсить в список там нету json path`a :(
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Спасибо, а как запихнуть это всё в список? Если парсить в список там нету json path`a :(
Какие конкретно данные Вы хотите получить? Всё что есть в каждом объекте в свойстве rginventory (
{"19973333563":{"id":"19973333563","classid":"4102468042","instanceid":"302028390","amount":"1","pos":1}
)?

Или что-то одно?
 

muhyrla

Client
Регистрация
31.07.2020
Сообщения
136
Благодарностей
7
Баллы
18
Какие конкретно данные Вы хотите получить? Всё что есть в каждом объекте в свойстве rginventory (
{"19973333563":{"id":"19973333563","classid":"4102468042","instanceid":"302028390","amount":"1","pos":1}
)?

Или что-то одно?
Мне нужно получить из rginventory, все id, classid и instanceid
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Сперва распарсите json, как Вам посоветовали выше https://zennolab.com/discussion/threads/plavajuschee-znachenie-v-parsinge-json.86067/post-578520
а потом
C#:
var list = project.Lists["список"];//здесь укажите название своего списка
for(int i = 0; i < project.Json.Count; i++){
    var id = project.Json[i].id;
    var classid = project.Json[i].classid;
    var instanceid = project.Json[i].instanceid;
    list.Add(string.Format("id = {0} | classid = {1} | instanceid = {2}", id, classid, instanceid));//здесь между "", можно отредактировать формат записи строк в список
}
 
  • Спасибо
Реакции: phoenixs и muhyrla

muhyrla

Client
Регистрация
31.07.2020
Сообщения
136
Благодарностей
7
Баллы
18
Сперва распарсите json, как Вам посоветовали выше https://zennolab.com/discussion/threads/plavajuschee-znachenie-v-parsinge-json.86067/post-578520
а потом
C#:
var list = project.Lists["список"];//здесь укажите название своего списка
for(int i = 0; i < project.Json.Count; i++){
    var id = project.Json[i].id;
    var classid = project.Json[i].classid;
    var instanceid = project.Json[i].instanceid;
    list.Add(string.Format("id = {0} | classid = {1} | instanceid = {2}", id, classid, instanceid));//здесь между "", можно отредактировать формат записи строк в список
}
Дает ошибку (


Тип Время Сообщение
19:48:12 Выполнение действия CSharp OwnCode. "ZennoLab.InterfacesLibrary.ProjectModel.IZennoList" не содержит определения для "Add"
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Мне нужно получить из rginventory, все id, classid и instanceid
Обрабатываете данные как я указывал в прошлом сообщении.
Затем с помощью того же экшена, но другого действия, помещаете данные либо в таблицу, либо в несколько списков
Для каждого свойства
(id, classid и instanceid)
нужно будет создать свой список и свой экшен.
68087
68088
 

muhyrla

Client
Регистрация
31.07.2020
Сообщения
136
Благодарностей
7
Баллы
18
Обрабатываете данные как я указывал в прошлом сообщении.
Затем с помощью того же экшена, но другого действия, помещаете данные либо в таблицу, либо в несколько списков
Для каждого свойства
(id, classid и instanceid)
нужно будет создать свой список и свой экшен.
Посмотреть вложение 68087
Посмотреть вложение 68088
Спасибо, получилось)
 
  • Спасибо
Реакции: nicanil

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63
Многоуважаемый nicanil подскажите, а как распарсить вот такой вариант 5sim
интерес к формату страна;провайдер;цена;количество в таблицу
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Многоуважаемый nicanil подскажите, а как распарсить вот такой вариант 5sim
интерес к формату страна;провайдер;цена;количество в таблицу
Сначала с помощью экшена "Обработка JSON" нужно распарсить json, а затем выполнить код ниже (в первой строке нужно указать название таблицы):
C#:
// Тут нужно указать название итоговой таблицы.
var table = project.Tables["Таблица 1"];

string rootElement = project.Json.GetMembersList()[0];

var countries = project.Json.GetMember(rootElement).GetMembersList();

foreach (var country in countries)
{
    var operators = project.Json.GetMember(rootElement).GetMember(country).GetMembersList();
    foreach (var op in operators)
    {
        project.SendInfoToLog(country, op);
        var tmp = new List<string>
        {
            country,
            op,
            project.Json.GetMember(rootElement).GetMember(country).GetMember(op).cost.ToString(),
            project.Json.GetMember(rootElement).GetMember(country).GetMember(op).count.ToString(),
        };
        
        lock (SyncObjects.TableSyncer)
        {
            table.AddRow(tmp);   
        }
    }
}
 

Вложения

  • 14,9 КБ Просмотры: 57
  • Спасибо
Реакции: baracuda

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