問題
您正在使用to_json ()將數據轉換為JSON,你得到一個不能使用null作為地圖的關鍵錯誤:
RuntimeException:不能使用null作為地圖的關鍵。
導致
to_json ()函數不支持使用null值作為輸入映射鍵。
這個示例代碼的原因不能使用null作為地圖的關鍵運行時錯誤,因為零值用作映射鍵在第四行。
% sql select to_json(地圖(1,“磚”,2,“地圖”,3,‘錯誤’,null,“數據”))為json。
解決方案
你應該過濾掉任何null值出現在輸入數據之前運行to_json (),或者使用nvl ()更換所有的null值非空值。
過濾空值
考慮一下這個例子DataFrame:
+ - - - + - - - - - - - - - - - - - - - - - - | + | Id值|地址| + - - - + - - - - - - - - - - - - - - - - - - + + | 1 |磚零| | | 2 |地圖|零| | 3 |錯誤xyz | | + - - - + - - - - - - - - - - - - - - - - - - + +
有兩個null值的例子。
嚐試使用to_json ()在這個DataFrame將返回一個錯誤。
我們可以通過隻顯示過濾空數據行有非空值。
例如,過濾df。過濾器(地址是not null),告訴()返回:
+ - - - + - - - + - - - - - - - | + | Id值|地址| + - - - + - - - + - - - - - - - | + | 3 |錯誤xyz | + - - - + - - - - - - - - - - - - - + +
這個過濾DataFrame不包含任何null值,所以它現在可以作為輸入使用to_json ()。
替換空值替換
如果你不能過濾掉null值,您可以使用nvl ()與非空值替換空值。
最初有一個null值的示例代碼映射鍵第四行。因為這導致一個錯誤,nvl ()在這個更新示例中用於替代null值4。
% sql select to_json(地圖(1,“磚”,2,“地圖”,3,‘錯誤’,nvl (null, 4),“數據”))為JSON。