地図<文字列、オブジェクト> jsonMap = 新しい HashMapの<文字列、オブジェクト> (); jsonMap.put(" A "、1 ); jsonMap.put(" B "、"" ); jsonMap.put(" C "、NULL ); jsonMap.put(" D "、" wuzhuti.cn " )。 文字列str = JSONObject.toJSONString(jsonMap)。 システム。アウト.println(STR); // 输出结果:{ "":1、 "B": ""
出力結果から分かるように、対応するヌルキーが除外されています。我々が何をしたい明確ではないが、我々は属性SerializerFeatureのfastjsonシーケンスを使用する必要があります
この方法は次のとおりです。JSONObject.toJSONString(Object object, SerializerFeature... features)
SerializerFeature便利列挙
QuoteFieldNames ---- 鍵は二重引用符、デフォルトはtrueかどうかを出力 WriteMapNullValue ---フィールドの出力がnullであるかどうか、デフォルトはfalse WriteNullNumberAsZero- - 数値フィールドnullの場合、出力は0で、NOT NULL WriteNullListAsEmpty--リストフィールドがnullの場合、出力は[]、NOT NULLである WriteNullStringAsEmpty-文字型フィールドがnullの場合、出力は「」ではないnullである 偽のブールフィールドがnullの場合WriteNullBooleanAsFalse-、出力、nullではありません
今すぐ追加
地図<文字列、オブジェクト> jsonMap = 新しい HashMapの<文字列、オブジェクト> (); jsonMap.put(" A "、1 ); jsonMap.put(" B "、"" ); jsonMap.put(" C "、NULL ); jsonMap.put(" D "、" wuzhuti.cn " )。 文字列str = JSONObject.toJSONString(jsonMap、SerializerFeature.WriteMapNullValue)。 システム。アウト.println(STR); //输出结果:{ "":1、 "B": ""、 "C":ヌル、 "D": "wuzhuti.cn"}
WriteNullStringAsEmptyも加える場合は、髪のために動作しませんか?!?!?
文字列str = JSONObject.toJSONString(jsonMap、SerializerFeature.WriteMapNullValue、SerializerFeature.WriteNullStringAsEmpty)。 システム。アウト.println(STR); // 输出结果:{ "":1、 "B": ""、 "C":ヌル、 "D": "wuzhuti.cn"}
現在のソリューションは、フィルタを追加することです
プライベート ValueFilterフィルタ= 新しいValueFilter(){ @Override パブリックオブジェクト処理(オブジェクトobj、ストリングS、オブジェクトV){ 場合(V == NULL ) リターン "" 。 リターンV; } }。 JSON.toJSONString(jsonMap、フィルタ)
しかし、心の不幸、なぜああ動作しませんか?SerializerFeature.WriteNullStringAsEmpty
fastjson githubの: https://github.com/alibaba/fastjson