split函数

iaqfqrcu  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(394)

我在hive中处理json数组,我知道它也可以用json serde来处理,但我想用get\u json\u object或json\u tuple和正则表达式来处理。所以我是在跟踪链接http://mechanics.flite.com/blog/2014/04/16/using-explode-and-lateral-view-in-hive/
它给出如下的json文件 {"key1":"0","key2":"11.800","info":"[{\"id\":\"1234\",\"v\":\"3\"},{\"id\":\"5678\",\"v\":\"3\"}]","key3":"3"} 为什么它需要在id和其他值前面有斜线??。观察如下
带regex的json
当我们在正则表达式上加上split时,我们从上面的结果得到如下结果 ["{\"id\":\"1234\",\"v\":\"3\"}","{\"id\":\"5678\",\"v\":\"3\"}"] 如果我删除源json文件中的斜杠,ebrything将变为null。

unguejic

unguejic1#

您看到的对象是有效的json,在这种情况下,key info的值恰好是一个字符串(看起来更像json,令人困惑)而不是一个对象、数组或数字,而是一个字符串。因为这个字符串中有一些双引号,所以它们被转义。
要显示这一点:

JSON.parse(JSON.stringify({"key1":"0","key2":"11.800","info":"[{\"id\":\"1234\",\"v\":\"3\"},{\"id\":\"5678\",\"v\":\"3\"}]","key3":"3"}));

结果:

相关问题