你好,我有一个json,格式如下,我需要在map函数中解析这个,得到所有记录的性别信息。
[
{
"SeasonTicket" : false,
"name" : "Vinson Foreman",
"gender" : "male",
"age" : 50,
"email" : "vinsonforeman@cyclonica.com",
"annualSalary" : "$98,501.00",
"id" : 0
},
{
"SeasonTicket": true,
"name": "Genevieve Compton",
"gender": "female",
"age": 28,
"email": "genevievecompton@cyclonica.com",
"annualSalary": "$46,881.00",
"id": 1
},
{
"SeasonTicket": false,
"name": "Christian Crawford",
"gender": "male",
"age": 53,
"email": "christiancrawford@cyclonica.com",
"annualSalary": "$53,488.00",
"id": 2
}
]
我试过使用jsonparser,但无法理解json结构,有人建议我使用jaql和pig,但我做不到。
任何帮助都将不胜感激。
1条答案
按热度按时间zzwlnbp81#
据我所知,您有一个包含JSON数组的巨大文件。其中,您需要将相同的内容读入Map器并发出声明
<id : gender>
. 挑战在于json会跨越多行。在这种情况下,我建议您将默认分隔符改为“}”,而不是“\n”。
在这种情况下,您将能够将json的一部分作为值放入map方法中。您可以放弃键,即byte offset,对值进行轻微的重新分解,比如去掉不需要的[]或,添加“}”这样的字符,然后解析剩余的字符串。
此解决方案之所以有效,是因为json中没有嵌套,}是一个有效的json结束分隔符,如给定的示例所示。
要更改默认分隔符,只需设置属性
textinputformat.record.delimiter
至"}"
请看这个例子。再看看这个吉拉。