Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何根据子数组元素的值最有效地在JSON数组中查找数组?_Java_Arrays_Json - Fatal编程技术网

在Java中,如何根据子数组元素的值最有效地在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"

这是我正在处理的一个JSON数据示例

{"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不用于查询。尝试此更新问题以澄清“有效”。这需要完全遍历,正如指定的那样,“高效”可能意味着“轻松”或“尽可能少的努力”或类似的方式。事实上,这个限定符可以完全省略。