2017-01-15 5 views
0

JSON配列をハイブで渡しています.JSONのserdeでも処理できますが、get_json_objectまたはjson_tupleと正規表現を使用して処理したいと思います。私は観察。それは、IDの前にスラッシュや他のすべての値を??持っている必要があり、なぜそれがこの {"key1":"0","key2":"11.800","info":"[{\"id\":\"1234\",\"v\":\"3\"},{\"id\":\"5678\",\"v\":\"3\"}]","key3":"3"} のようなJSONファイルを与えるリンクにhttp://mechanics.flite.com/blog/2014/04/16/using-explode-and-lateral-view-in-hive/JSONS上のハイブの分割機能

をfollwingた

JSON With REGEX

以下のようなものです

我々は上記の結果から得た正規表現に分割を追加すると私は私の元のJSONファイルebrythingにスラッシュを削除した場合、我々は ["{\"id\":\"1234\",\"v\":\"3\"}","{\"id\":\"5678\",\"v\":\"3\"}"]

以下のものを得ますこれから出る可能性のある方法は何ですか?

+0

それがキー "情報" の* *値内にある二重引用符をエスケープだ、これを表示する

。単引用符ではないのはなぜか分かりません。あなたはその文字列から何を得ようとしていますか? – sweaver2112

+0

ハイブのデータを読み取るには、いくつかの方法があります。分解されたキーの値のペアを文字列の形で欲しいのは、私にとってはうまくいくからです。 – codaholic

答えて

2

あなたが見ているオブジェクトは有効なJSONです。この場合、キーの値の情報は文字列です(JSONのように見えますが、紛らわしい)。オブジェクト、配列、文字列です。この文字列には二重引用符があるため、エスケープされます。

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

結果:

enter image description here