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