Skip to content

Problema na Visualização de JsonObject no Debug do VSCode #1431

@julioc-barros

Description

@julioc-barros

Resumo do Problema

Durante o debug de código AdvPL, ao utilizar objetos JSON criados dinamicamente com JsonObject():New(), ocorre uma divergência entre a visualização correta exibida pelo AppServer (via VarInfo()) e a visualização incorreta apresentada no painel de variáveis do VSCode, utilizando o plugin TOTVS Developer Studio for VSCode.

Embora o objeto JSON esteja correto em tempo de execução, o painel Variables do VSCode não reflete fielmente a estrutura nem os valores reais do objeto, o que compromete o processo de debug.

🖥️ Ambiente

🔧 AppServer TOTVS

TOTVS - Build 7.00.240223P
Build Version: 24.3.1.4
SVN Revision: 46268
Vader Revision: 3792
Arquitetura: 64 bits
Data do Build: Oct 30 2025 - 11:50:54
Modo: RELEASE VERSION WITH SYMBOLS INFORMATION

🐧 Sistema Operacional do AppServer

Distribuição Linux: Oracle Linux Server 8.9
Kernel: 4.18.0-348.el8.x86_64
GLIBC: 2.28
Arquitetura: x86_64
Modo: Virtual Machine

🧩 IDE / Debug

IDE: Visual Studio Code
Extensão: TOTVS Developer Studio for VSCode
SO da estação de desenvolvimento: Windows 64 bits

🔁 Passos para Reproduzir

Conectar o VSCode ao AppServer TOTVS utilizando o plugin TOTVS Developer Studio for VSCode
Iniciar o debug de uma rotina AdvPL
Criar dinamicamente um objeto JSON conforme exemplo abaixo:

cProduto := "500.009050"

jDiferentes := JsonObject():New()
jDiferentes[Alltrim(cProduto)] := JsonObject():New()

jDiferentes[Alltrim(cProduto)]["B1_PESO"] := JsonObject():New()
jDiferentes[Alltrim(cProduto)]["B1_PESO"]["OLD"] := 15.0
jDiferentes[Alltrim(cProduto)]["B1_PESO"]["NEW"] := 20.1

jDiferentes[Alltrim(cProduto)]["B1_CNTR"] := JsonObject():New()
jDiferentes[Alltrim(cProduto)]["B1_CNTR"]["OLD"] := 1000
jDiferentes[Alltrim(cProduto)]["B1_CNTR"]["NEW"] := 2000

Executar:

VarInfo("Diff", jDiferentes)

Observar:

✔️ Resultado correto no console do AppServer
❌ Resultado incorreto no painel Variables do VSCode

O painel de variáveis do VSCode deveria:

Refletir corretamente a estrutura do objeto JSON
Exibir corretamente objetos aninhados
Apresentar os mesmos valores exibidos pelo VarInfo() no console do AppServer

❌ Comportamento Atual

O VarInfo() no console do AppServer exibe o JSON corretamente
O painel Variables do VSCode:
Mostra a estrutura do JSON de forma incorreta
Apresenta informações inconsistentes ou incompletas
Não representa fielmente o conteúdo real da variável
A variável existe e contém dados válidos, porém o plugin não renderiza corretamente objetos JSON dinâmicos

📎 Evidências (prints a serem anexados)

Print do VarInfo() no console do AppServer (exibição correta)

Image

Print do painel Variables do VSCode (exibição incorreta)

Image

Print do código AdvPL responsável pela criação do JSON

Image

Print da versão da extensão TOTVS Developer Studio for VSCode

Image

⚠️ Impacto

Esse comportamento dificulta e compromete o processo de debug, pois o desenvolvedor não consegue confiar na visualização das variáveis ao trabalhar com objetos JSON (JsonObject) no VSCode.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions