一部の JSON シリアライザnull
は、空の文字列データ フィールドを返します。
{
"searchtext": null,
"moretext": "contains something",
"bookdate": 1377468000000,
"empid": 12345,
"listtype": 1
}
SuperObject を使用して ISuperObject を作成しています。
var
FJSONRequest: ISuperObject;
then
FJSONRequest := SO(Request.Content); // Webservice request
これは、テキストを含む文字列を持つオブジェクトを返します'null'
。
明らかにこれは、SuperObject が引用符を気にしないためです ("searchtext": a
と同じ結果が得られます"searchtext": "a"
)。
980 行のトークナイザー ルーチンに飛び込む前に、解決策はありますか?
私は次のように考えています(どちらか/または):
JSON オブジェクトから null データフィールドを除外します
空の文字列を返す
他のすべてが失敗した場合でも、私はまだできる
FJSONRequest := SO(StringReplace(Request.Content,': null,',':,',[rfReplaceAll]));
開発者の 1 人からのアプリからのリクエストのみを処理する必要があるためですが、それは絶対確実ではありません。(いいえ、 Mono が datacontract を処理する方法にバグがあるため
、彼は を抑制することができません。)null
ところで、私はここで述べた動作を正確に経験していますが、SuperObject コードの別の部分で、その回避策は機能しません。