powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / разбор строковой переменной
17 сообщений из 17, страница 1 из 1
разбор строковой переменной
    #38671577
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Задача состоит в том, чтобы сформировать список "id" и соответствующих им записей "licence" по следующей ссылке . Я предполагаю следующую последовательность действий. Читаю html код страницы, ищу строку "var banksList =" и читаю все содержимое в строковую переменную. После чего ее можно парсить по запятым. Вот с этим делом проблемы, вроде ничего сложного, но у меня не выходит.

Пример исходных данных:

[{"id":"190503","name":"2Т Банк","licence":"625"},{"id":"196048","name":"АББ","licence":"2937"},{"id":"9259","name":"Абсолют Банк","licence":"2306"}];

В результате хочется иметь таблицу в excel вида
idlicence190503625196048293792592306

Помогите с реализацией кода! Спасибо!

PS каков максимальный объем строковой переменной, у меня выходит около 110 тыс знаков. влезет?
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38671585
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanBвлезет?влезет
PlanBне выходит.а в чем конкретно проблема? про Split ты вроде в курсе...
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38671611
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, привет! да, в курсе. ну там много всякой гадости. запятые, скобки, ковычки. по всем по очереди пройтись?
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38671716
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делать каскадный сплит.
Сначала по },{
Потом по запятой
Потом по двоеточию
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38671722
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не
сначала по },{
потом по кавычка запятая кавычка
потом по кавычка двоеточие кавычка

при этом не забывать подрезать крайние скобки, кавычки и т.п.
если там несколько элементов массива, тогда еще самый первый сплит по ],[
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38671786
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, у меня с массивами все очень печально =((( вот и не выходит
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38671793
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanBShocker.Pro, у меня с массивами все очень печально =((( вот и не выходитно я вроде допер
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38671797
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у тебя с VB-массивами печально или с JSON-массивами?
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38672021
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proу тебя с VB-массивами печально или с JSON-массивами? я такую аббревиатуру не видел-то
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38672057
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[{"id":"190503","name":"2Т Банк","licence":"625"},{"id":"196048","name":"АББ","licence":"2937"},{"id":"9259","name":"Абсолют Банк","licence":"2306"}];это данные в вышеуказанном формате )
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38672104
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в VB какой версии это нужно сделать?
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38672133
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серега в VBA работает ))
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38672144
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanB,

Поищите/погуглите готовые классы для JSON - попробуете скормить, если пройдёт - облегчите себе жизнь, если нет - прийдётся парсить вручную. Хотя опять же можно выхитриться с помощью ScriptControl (используя JS сожрать через eval, на выходе получаем объект JS, останется написать обёртку к полученным данным)
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38672273
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLADиспользуя JS сожрать через eval, на выходе получаем объект JS, останется написать обёртку к полученным даннымНе все так просто, на выходе получаем текст "[object Object],[object Object],[object Object]".

Нужно внедрить объект с методом, который будет принимать в качестве параметров id и licence, а евалить цикл, который пробежится по массиву и надергает из него значений:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
'модуль:

Public Type BankLicence
    id As Long
    licence As Long
End Type

Sub Start()
Dim sc As New ScriptControl
Dim cl As New Class1
    sc.Language = "jscript"
    sc.AddCode "var banksList = [{""id"":""190503"",""name"":""2Т Банк"",""licence"":""625""},{""id"":""196048"",""name"":""АББ"",""licence"":""2937""},{""id"":""9259"",""name"":""Абсолют Банк"",""licence"":""2306""}];"
    sc.AddObject "Class1", cl
    sc.Eval "for(var x=0;x<banksList.length;x++)Class1.Add(banksList[x].id,banksList[x].licence)"
    Debug.Print UBound(cl.BankLicences)
End Sub

'класс:

Dim lBankLicences() As BankLicence
Dim lIndex As Integer

Friend Property Get BankLicences() As BankLicence()
    BankLicences = lBankLicences
End Property

Public Sub Add(ByVal id As Long, ByVal licence As Long)
    lIndex = lIndex + 1
    ReDim Preserve lBankLicences(lIndex)
    lBankLicences(lIndex).id = id
    lBankLicences(lIndex).licence = licence
End Sub

Private Sub Class_Initialize()
    lIndex = -1
End Sub
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38672605
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Да, примерно такое решение. Я всё таки добрался до нужных элементов в объекте JS. Правда нужно соблюдать регистр, т.е. например чтобы получить элемент "name", то xBank.Name - Среда автоматически ставит, поэтому или в исходном JSON отреплейсить в верхний регистр "name" -> "Name", или подумать, может есть ещё какой способ.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub Start()
    Dim sc As New ScriptControl
    Dim xItem As Variant
    
    sc.Language = "jscript"
    sc.AddCode "var banksList = [{""id"":""190503"",""name"":""2Т Банк"",""licence"":""625""},{""id"":""196048"",""name"":""АББ"",""licence"":""2937""},{""id"":""9259"",""name"":""Абсолют Банк"",""licence"":""2306""}];"
    
    For Each xBank In sc.CodeObject.banksList
        Debug.Print xBank.id & vbTab & xBank.licence
    Next
End Sub
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38672682
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, про CodeObject не знал, так конечно проще.
...
Рейтинг: 0 / 0
разбор строковой переменной
    #38672981
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLAD... Правда нужно соблюдать регистр, т.е. например чтобы получить элемент "name", то xBank.Name - Среда автоматически ставит, поэтому или в исходном JSON отреплейсить в верхний регистр "name" -> "Name", или подумать, может есть ещё какой способ .
Достаточно написать Dim name, id, licence
а потом это можно и удалить/закомментировать - среда запомнит
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / разбор строковой переменной
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]