Como executar esta alteração de string dinamicamente, para este problema?
O método GetResult() esta retornando a string : "[ {"segredo":"sucessso"} ]"
Coloquei este retorno na variável sStrn0
Necessito alterar esta string para '{ "Data": [ {"segredo":"sucessso"} ] }' para passar pelo médoto FromJSON() da classe JsonObject()
Apliquei as instruções abaixo, dentre outras opções, mas todas falharam :
sStrn1 := "'"+'{"Data":"'+sStrn0+"'}'"
sStrn1 := '{"Data":"'+sStrn0+'}'
O retorno sem é "{ "Data": [ {"segredo":"sucessso"} ] }" , com aspas duplas
Ao passar a string pelo metódo FromJSON() é retornado erro "Json Error: >>..."
Como executar esta alteração de string dinamicamente, para este problema?
Muito Obrigado e Sucesso
Se o problema for para acessar o resultado não precisa fazer isso,
cResult := oRest:getResult()
cParser := jJson:fromJson(cResult)
cSegredo:= jJson["segredo"]
Leandro,
Muito Obrigado por responder. Estas instruções eu havia aplicado, mas não funcionou devido a que o schema retornado esta fora do padrão json. O motivo de alterar a string é para tornar o schema válido. Estou utilizando protheus 12.1.27 Build 7.00.191205P Version 4.7.0. O bizarro é que na versão 12.1.25 funciona normalmente. Muito Obrigado.
Claudinei,
Fiz da seguinte forma e funcionou:
//-------------------------------------------------------------------
/*/{Protheus.doc} u_strJson
Exemplo de criação de json
@author Daniel Mendes
@since 07/10/2021
@version 1.0
/*/
//-------------------------------------------------------------------
function u_strJson()
local cResult as character
local cJson as character
local jJson as json
local jArrayJson as json
//Isso ficaria a mesma coisa, o debug sempre mostra a string com aspas duplas mesmo que você crie a mesma com aspas simples
// cResult := '[ {"segredo":"sucessso"} ]'
//String principal, simulando o método getResult
cResult := "[ {" + '"' + "segredo" + '"' + ":" + '"' + "sucessso" + '"' + "} ]"
cJson := '{"Data":' + cResult + '}'
jJson := JsonObject():new()
jJson:fromJson(cJson)
ConOut(jJson:toJson())
ConOut(jJson["Data"][1]["segredo"])
return
1 curtida
@Daniel Mendes
A instrução cJson := ‘{“Data”:’ + cResult + ‘}’ funcionou!
O meu erro foi querar enxergar em memória exatamente como escrevo a instrução e não precisa.
Muito Obrigado