在Java中,如何根据子数组元素的值最有效地在JSON数组中查找数组?
这是我正在处理的一个JSON数据示例在Java中,如何根据子数组元素的值最有效地在JSON数组中查找数组?,java,arrays,json,Java,Arrays,Json,这是我正在处理的一个JSON数据示例 {"season":"2016", "week":"", "positions":{ "QB":[ { "id":"2505245", "esbid":"PAL249055", "gsisPlayerId":"00-0021429", "firstName":"Carson", "lastName":"Palmer", "teamAbbr"
{"season":"2016",
"week":"",
"positions":{
"QB":[
{
"id":"2505245",
"esbid":"PAL249055",
"gsisPlayerId":"00-0021429",
"firstName":"Carson",
"lastName":"Palmer",
"teamAbbr":"ARI",
"opponentTeamAbbr":"",
"position":"QB",
"rank":"22",
"statsLine":"",
"stats":
{
"PassYds":false,
"PassTDs":false,
"Int":false,
"RushYds":false,
"RushTDs":false,
"RecYds":false,
"RecTds":false,
"FumTD":false,
"TwoPt":false,
"FumLost":false
},
"pts":"85.00",
"projectedPts":"277.46",
"status":""
},
{
"id":"2495748",
"esbid":"STA482517",
"gsisPlayerId":"00-0025430",
"firstName":"Drew",
"lastName":"Stanton",
"teamAbbr":"ARI",
"opponentTeamAbbr":"",
"position":"QB",
"rank":"42",
"statsLine":"",
"stats":
{
"PassYds":false,
"PassTDs":false,
"Int":false,
"RushYds":false,
"RushTDs":false,
"RecYds":false,
"RecTds":false,
"FumTD":false,
"TwoPt":false,
"FumLost":false
},
"pts":"11.06",
"projectedPts":"7.36",
"status":""}]
}
}
现在我有一个巨大的列表,上面有数百名不同的玩家,我希望能够获得单个玩家的数据。在这种情况下,假设我想找到卡森·帕默的统计数据。这意味着我想在QB JSON数组中查找一个子数组,其中包括firstName:Carson
和lastName:Palmer
对于像GSON这样的库,我将如何做到这一点?
从所有位置,找到名为Carson,姓Palmer的所有元素
$.positions[*][?(@.firstName == "Carson" && @.lastName == "Palmer")]
将.stats
添加到该对象的末尾,或者自己从该对象中解析出来
注意:返回一个数组。多个玩家可以有这个名字
或者,您正在从某个服务器获取此数据,您应该执行播放器搜索服务器端Gson不用于查询。尝试此更新问题以澄清“有效”。这需要完全遍历,正如指定的那样,“高效”可能意味着“轻松”或“尽可能少的努力”或类似的方式。事实上,这个限定符可以完全省略。