Em 4D v16 R4, enriquecemos os comandos de objectos para que possa validar objectos JSON. 4D v16 R5 vai ainda mais longe, introduzindo o apoio dos apontadores JSON. Óptimo – mas o que é um ponteiro JSON e o que posso fazer com ele?
Tal como não armazena os detalhes da empresa para cada funcionário num registo de base de dados (usando em vez disso um link para o registo da empresa), pode ser realmente útil estruturar um documento JSON com partes que podem ser reutilizadas em vários locais.
Por exemplo, vejamos um exemplo de uma encomenda de um website; o cliente introduz o endereço de envio e designa o endereço de facturação como sendo o mesmo. Em vez de duplicarmos a informação da morada, podemos definir a morada de envio como uma referência à morada de facturação.
Outro cenário é definir um objecto modelo contendo propriedades padrão armazenadas em formato JSON e funde algumas das propriedades com informação armazenada num ficheiro JSON separado.
Os objectos que contêm ciclos(ou seja, dois objectos que se contêm um ao outro) não podem ser codificados em formato JSON. As indicações JSON são uma forma de expressar a referência cíclica, mantendo ao mesmo tempo a compatibilidade com o formato JSON.
CONCEITO DO Apontador JSON
O JSON Pointer é uma norma que define uma sintaxe de cadeia que pode ser utilizada para aceder a um determinado campo ou valor chave no mesmo ou noutro documento JSON. É composto por cordas separadas pelo caracter “/”. Estas cadeias de caracteres especificam chaves em objectos ou índices em arrays. A sintaxe do ponteiro JSON é definida pelo RFC 6901.
Por exemplo, este objecto:
{ "foo": {"$ref": "#/bar"}, "bar": "42" }
Pode ser resolvido como:
{ "foo": "42", "bar": "42" }
NOVO COMANDO
As variáveis JSON resolve pointers analisa todos os indicadores JSON encontrados no objecto passado como parâmetro em relação a algumas definições de opções (se existirem). O comando devolve então um objecto com o estado de sucesso, o valor do resultado e a lista potencial de erros.
POUCOS exemplos… é sempre útil!
Veja a nossa demonstração da base de dados de exemplos para aprender (e compreender) mais sobre como funcionam os indicadores JSON!
Para além da demonstração, eis outro exemplo – tomemos uma variável $object que contém o seguinte:
Se eu executar o código abaixo:
$result:=JSON Resolve pointers($object)
TRACE
Aqui está o que recebo nas variáveis $object e $result:
Note-se que $result é um objecto, contendo tanto o estado de sucesso como o valor retornado. Se tivesse havido erros, estes também teriam sido incluídos.