Boa tarde Vinicius,
A classe JsonObject é um tipo especial, se você reparar, quando você instancia o mesmo, o seu tipo não é um objeto, é um JSON, faça um conout do valtype para verificar isso:
function u_MyJsonObj()
local jJson
jJson := JsonObject():New()
ConOut(ValType(jJson))
return nil
Além disso, ela também tem a questão de trabalhar com colchetes etc.
Se você deseja herdar da mesma, recomendo você optar pelo padrão de composição, veja um exemplo abaixo:
#include "protheus.ch"
class MyJsonObject from longnameclass
data jJson
method new()
method addKey()
method addValueToKey()
method toString()
endclass
method new() class MyJsonObject
self:jJson := JsonObject():New()
return self
method addKey(cKey) class MyJsonObject
self:jJson[cKey] := Nil
return nil
method addValueToKey(cKey, xValue) class MyJsonObject
self:jJson[cKey] := xValue
return nil
method toString() class MyJsonObject
return self:jJson:toJson()
function u_MyJsonObj()
local oJson as object
oJson := MyJsonObject():New()
ConOut(ValType(oJson))
oJson:addKey("Xisto")
oJson:addKey("Xpto")
oJson:addValueToKey("Xpto", "=)")
ConOut(oJson:toString())
FreeObj(oJson)
return nil
Você pode expor todos os demais métodos que a JsonObject possui, alterando comportamentos, implementando os seus etc.