Hive 和 get_json_object 奇怪的行为
我正在使用 get_json_object 运行 hive 查询来从 HDFS 中的文件读取 json 字符串。 我遇到了一些奇怪的行为: 如果 json 如下:
{"data":{"oneSlash":"aaa\bbb","twoSlashes":"ccc\\ddd","threeSlashes":"eee\\\fff"}}
查询的结果是:
{"oneSlash":"aaabbb","twoSlashes":"ccc\\ddd","threeSlashes":"eee\\fff"}
我理解 'oneSlash' 和 ' ThreeSlashes' 结果,但为什么 'twoSlashes' 不等于“ccc\ddd”? 毕竟 '\' 应该不转义为 '\'
顺便说一句,查询是:
SELECT get_json_object(escaping_test.data, '$.data') FROM escaping_test
I am running hive query using get_json_object to read json strings from files in HDFS.
And I bumped with some strange behavior:
if the json is as follow:
{"data":{"oneSlash":"aaa\bbb","twoSlashes":"ccc\\ddd","threeSlashes":"eee\\\fff"}}
The result of the query is:
{"oneSlash":"aaabbb","twoSlashes":"ccc\\ddd","threeSlashes":"eee\\fff"}
I understand the 'oneSlash' and the 'threeSlashes' result but why 'twoSlashes' did not equal to "ccc\ddd"?
after all '\' should be unescaped to '\'
BTW the quesry is:
SELECT get_json_object(escaping_test.data, '$.data') FROM escaping_test
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是因为 \b 和 \f 是有效的转义字符,而 \d 不是。有一篇文章更详细地介绍了这一点: 在哪里可以找到 JSON ajax 返回类型所需的转义字符列表?
it's because \b and \f is valid escape characters whereas \d is not. there's a post about this in more detail: Where can I find a list of escape characters required for my JSON ajax return type?