String com " versus string com '

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