SuperObject não pode manipular cadeia nula
Alguns serializadores JSON retornamnull
para um campo de dados de cadeia vazia, e.
{
"searchtext": null,
"moretext": "contains something",
"bookdate": 1377468000000,
"empid": 12345,
"listtype": 1
}
Estou usando o SuperObject para criar um ISuperObject:
var
FJSONRequest: ISuperObject;
then
FJSONRequest := SO(Request.Content); // Webservice request
Isso retorna um objeto com uma string contendo o texto'null'
.
Obviamente, isso ocorre porque o SuperObject não se importa com as aspas ("searchtext": a
dá os mesmos resultados que"searchtext": "a"
).
Antes de mergulhar na rotina do tokenizer de 980 linhas, alguém tem uma solução?
Estou pensando nas linhas (ou / ou):
deixe o campo de dados nulo fora do objeto JSON
retornar uma string vazia
Se tudo mais falhar, eu ainda poderia fazer
FJSONRequest := SO(StringReplace(Request.Content,': null,',':,',[rfReplaceAll]));
porque eu só preciso lidar com solicitações vindas de um aplicativo de um de nossos desenvolvedores, mas isso não é infalível.
(Não, ele não pode suprimir onull
Porquehá um bug no modo como o Mono lida com seu datacontrato.)
BTW estou experimentando exatamenteo comportamento mencionado aqui, mas em outra parte do código SuperObject, para que a solução alternativa não faça o trabalho.