Существует ли синтаксический анализатор JSON для VB6 / VBA?

Я пытаюсь использовать веб-сервис в VB6. Сервис - которым я управляю - в настоящее время, может возвращать SOAP/сообщение XML или JSON. Мне действительно тяжело выяснять, может ли тип SOAP VB6 (версия 1) обработать возвращенный object - в противоположность простым типам как string, int, и т.д. До сих пор я не могу выяснить то, что я должен сделать, чтобы заставить VB6 играть с возвращенными объектами.

Таким образом, я думал, что мог бы сериализировать ответ в веб-сервисе как строка JSON. Синтаксический анализатор JSON существует для VB6?

39
задан Jocelyn 27 August 2012 в 19:36
поделиться

2 ответа

Посмотрите на JSON.org актуальный список (см. внизу главной страницы) парсеров JSON на разных языках. На момент написания этой статьи вы увидите там ссылку на несколько различных парсеров JSON, но только один из них предназначен для VB6/VBA (остальные - для .NET):

  • VB-JSON

    • Когда я попытался загрузить zip-файл, Windows сказала, что данные повреждены. Однако я смог использовать 7-zip, чтобы вытащить файлы. Оказалось, что главная "папка" в zip-файле не распознается Windows как папка, но 7-zip может видеть содержимое этой главной "папки", поэтому ее можно открыть, а затем извлечь файлы соответствующим образом.
    • Фактический синтаксис этой библиотеки VB JSON очень прост:

      Dim p As Object
      Set p = JSON.parse(strFormattedJSON)
      
      'Печать текста вложенного свойства '
      Debug.Print p.Item("AddressClassification").Item("Description")
      
      'Печать текста свойства внутри массива '
      Debug.Print p.Item("Candidates")(4).Item("ZipCode")
      
    • Примечание: Мне пришлось добавить библиотеки "Microsoft Scripting Runtime" и "Microsoft ActiveX Data Objects 2.8" в качестве ссылок через Tools > References в редакторе VBA.
    • Примечание: Код VBJSON фактически основан на проекте google code vba-json. Однако VBJSON обещает несколько исправлений ошибок по сравнению с оригинальной версией.
41
ответ дан 27 November 2019 в 02:23
поделиться

Я бы предложил использовать компонент .Net. Вы можете использовать компоненты .Net из VB6 через Interop - вот учебное пособие . Я предполагаю, что компоненты .Net будут более надежными и лучше поддерживаться, чем все, что создано для VB6.

В структуре Microsoft .Net есть такие компоненты, как DataContractJsonSerializer или JavaScriptSerializer . Вы также можете использовать сторонние библиотеки, такие как JSON.NET .

2
ответ дан 27 November 2019 в 02:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: