3

我有以下格式的 json 文件:

{ "_id" : "foo.com", "categories" : [], "h1" : { "bar==" : { "first" : 1281916800, "last" : 1316995200 }, "foo==" : { "first" : 1281916800, "last" : 1316995200 } }, "name2" : [ "foobarl.com", "foobar2.com" ], "rep" : null }

那么,我如何在猪中解析这个json..

此外,类别和代表中可能有一些字符......并且可能并不总是空的。我做了以下尝试。

a = load 'sample_json.json' using JsonLoader('id:chararray,categories:[chararray], hostt:{ (variable_a: {(first:int,last:int)})}, ns:[chararray],rep:chararray  ');

但我得到这个错误:

org.codehaus.jackson.JsonParseException: Unexpected character ('D' (code 68)): 在 [Source: java .io.ByteArrayInputStream@4795b8e9; line: 1, column: 50] at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1291) at org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:385) at org.codehaus.jackson .impl.JsonParserMinimalBase._reportUnexpectedChar(JsonParserMinimalBase.java:306) 在 org.codehaus.jackson.impl.Utf8StreamParser._handleUnexpectedValue(Utf8StreamParser.java:1582) 在 org.codehaus.jackson.impl.Utf8StreamParser.nextToken(Utf8StreamParser.java:386) ) 在 org.apache.pig.builtin 的 org.apache.pig.builtin.JsonLoader.readField(JsonLoader.java:173)。

4

1 回答 1

3

您可以使用大象鸟猪罐来解析json。它可以解析各种 json 数据。以下是使用此 jar 通过大象鸟猪解析 json 的某些示例。 https://github.com/twitter/elephant-bird/tree/master/examples/src/main/pig

即使预期的 json 标记不存在,它也不会中断。

于 2014-11-24T08:37:26.440 回答