to_json()導致不能使用null作為地圖關鍵錯誤

您必須在您的輸入過濾或替換空值數據在使用to_json ()。

寫的gopal.goel

去年發表在:2022年7月22日

問題

您正在使用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。