您好我有以下格式的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但不能这样做。
任何帮助都将不胜感激。
答案 0 :(得分:0)
我的理解是你有一个包含JSON数组的巨大文件。其中,您需要将相同内容读取到映射器并发出说<id : gender>
。挑战在于JSON属于多行。
在这种情况下,我建议您将默认分隔符更改为&#34;}&#34;而不是&#34; \ n&#34;。
在这种情况下,您将能够将部分JSON作为值获取到map方法中。你可以丢弃钥匙即。字节偏移并对值执行轻微的重新分段,例如删除不需要的[]或添加字符,如&#34;}&#34;然后解析剩余的字符串。
此解决方案有效,因为在JSON中没有嵌套,并且}是根据给定示例的有效JSON结束分隔符。
要更改默认分隔符,只需将属性textinputformat.record.delimiter
设置为"}"
请查看this示例。
同时检查this jira。