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。



这篇文章有用吗?