JSONとnullの解惑

1158 ワード

プログラムを作ってから今まで、JSONを使って何年もかかりました。突然JSONがputの空き値の時にkeyがあることを発見しました。ある時はありません。この疑惑を解消するために、以下のテストを行いました。私が使っているカバンはJson-lib-244-jdk 15.jarです。
 
例1:
public static void main(String[] args) {
        JSONObject json = new JSONObject();
        json.put("key", null);
        System.out.println(json);
}
 コントロール出力が見えます。{}
このことから、もしputの空のポインターがJSONに与えられたら、JSONはこのkeyを自動的に遮断することができます。
 
もう一つの例を見に来ます。
 
例二:
 public static void main(String[] args) {
        JSONObject json = new JSONObject();
        String value = "null";
        json.put("key", value);
        System.out.println(json);
 }
 コンソール出力:{"key":null]
 
例2では、Stringタイプの文字列valueの値を「null」に設定します。この時JSONはkeyとvalueを持っています。皆さん、valueはnullです。「null」には引用符が付いていません。JSONが文字列「null」を自動的に識別可能な空の値に変換すると推測します。もし我々がvalueの値を「null」以外の任意の文字に設定すれば、JSONには引用符が付いています。
 
 
以上のように、valueが空の時にkeyを表示しないとnullを直接伝えることができます。ただし、valueが空であるかどうかに関わらず、keyを持つ必要がある場合は、手動でnullを「null」文字列に変換すればいいです。
 
浅学非才で何か不正がありますか?上手な人に教えてほしいです。