Estou utilizando a função FWJsonSerialize e ela está ordenando as Tags do JSON conforme tamanho dos campos, existe algum jeito da função transformar o objeto passado para ela de acordo com a inserção no objeto?
Exemplo:
oRetorno["teste01"] := "123456"
oRetorno["teste"] := "12345"
cJson := FWJsonSerialize(oRetorno, .F., .F., .T.)
Ele monta da seguinte forma:
{"teste":"12345","teste":"123456"}
Gostaria que ele montasse o JSON conforme abaixo:
{"teste01":"123456","teste":"12345"}
Bom dia Felipe,
Não seria melhor você utilizar da classe JsonObject do binário? A performance dela é muito superior, porém acredito que ela também não preservará a ordenação que você deseja, porém vale a pena um teste:
http://tdn.totvs.com/display/tec/Classe+JsonObject
Não faz muito sentido se preocupar com a ordem dos campos no objeto se ele é acessado pelo nome da proridade.
Boa noite. Por se tratar de um objeto não existe 'atributo antes' ou 'atributo depois'. Desta forma não há como controlar o retorno da serialização do objeto.
1 curtida
De acordo com a especificação do RFC R7159:
- Um objeto é uma coleção não ordenada de zero ou mais pares de nome/valor, onde o nome é uma string e o valor é uma string, um número, um booleano, nulo, objeto ou um array.
- Um array é uma sequência ordenada de 0 ou mais valores.
Como objetos não preservam ordem, se o faz necessário mantê-la (e ainda assim atrelar a uma chave), torna-se viável usar arrays de pares de nome/valor para representar.