SuperObject no puede manejar una cadena nula
Algunos serializadores JSON vuelvennull
para un campo de datos de cadena vacía, p. ej.
{
"searchtext": null,
"moretext": "contains something",
"bookdate": 1377468000000,
"empid": 12345,
"listtype": 1
}
Estoy usando SuperObject para crear un ISuperObject:
var
FJSONRequest: ISuperObject;
then
FJSONRequest := SO(Request.Content); // Webservice request
Esto devuelve un objeto con una cadena que contiene el texto.'null'
.
Obviamente, esto se debe a que SuperObject no se preocupa por las comillas ("searchtext": a
da los mismos resultados que"searchtext": "a"
).
Antes de sumergirme en la rutina del tokenizador de 980 líneas, ¿alguien tiene una solución?
Estoy pensando a lo largo de las líneas (ya sea / o):
dejar el campo de datos nulo fuera del objeto JSON
devolver una cadena vacía
Si todo lo demás falla, todavía podría hacer.
FJSONRequest := SO(StringReplace(Request.Content,': null,',':,',[rfReplaceAll]));
porque solo necesito manejar solicitudes provenientes de una aplicación de uno de nuestros desarrolladores, pero eso no es infalible.
(No, él no puede suprimir lanull
porqueHay un error en la forma en que Mono maneja su contrato de datos..)
Por cierto estoy experimentando exactamenteel comportamiento mencionado aquí, pero en otra parte del código de SuperObject, para que la solución no haga el trabajo.