SuperObject kann keine Nullzeichenfolge verarbeiten
Einige JSON-Serializer kehren zurücknull
für ein leeres String-Datenfeld, z.B.
{
"searchtext": null,
"moretext": "contains something",
"bookdate": 1377468000000,
"empid": 12345,
"listtype": 1
}
Ich benutze SuperObject, um ein ISuperObject zu erstellen:
var
FJSONRequest: ISuperObject;
then
FJSONRequest := SO(Request.Content); // Webservice request
Dies gibt ein Objekt mit einer Zeichenfolge zurück, die den Text enthält'null'
.
Dies liegt offensichtlich daran, dass SuperObject die Anführungszeichen nicht berücksichtigt ("searchtext": a
ergibt die gleichen Ergebnisse wie"searchtext": "a"
).
Hat jemand eine Lösung, bevor ich in die 980-Zeilen-Tokenizer-Routine eintauche?
Ich denke nach dem Motto (entweder / oder):
Lassen Sie das Nulldatenfeld außerhalb des JSON-Objekts
Gib eine leere Zeichenkette zurück
Wenn alles andere fehlschlägt, könnte ich es trotzdem tun
FJSONRequest := SO(StringReplace(Request.Content,': null,',':,',[rfReplaceAll]));
weil ich nur Anfragen von einer App eines unserer Entwickler bearbeiten muss, aber das ist nicht kinderleicht.
(Nein, er kann das nicht unterdrückennull
daEs gibt einen Fehler in der Art und Weise, wie Mono mit seinem Datenvertrag umgeht.)
Übrigens erlebe ich genaudas hier erwähnte Verhalten, aber in einem anderen Teil des SuperObject-Codes, so dass die Problemumgehung nicht funktioniert.