如何根据条件在JAVA中查找Json数组响应中的字符串

时间:2018-04-01 10:04:37

标签: java rest api

如果这是重复的帖子,请道歉。我试图根据指定的条件在以下数组响应中找到一个字符串。

{
    "MRData": {
        "xmlns": "http://ergast.com/mrd/1.4",
        "series": "f1",
        "url": "http://ergast.com/api/f1/2016/drivers.json",
        "limit": "30",
        "offset": "0",
        "total": "24",
        "DriverTable": {
            "season": "2016",
            "Drivers": [
                {
                    "driverId": "alonso",
                    "permanentNumber": "14",
                    "code": "ALO",
                    "url": "http://en.wikipedia.org/wiki/Fernando_Alonso",
                    "givenName": "Fernando",
                    "familyName": "Alonso",
                    "dateOfBirth": "1981-07-29",
                    "nationality": "Spanish"
                },
                {
                    "driverId": "bottas",
                    "permanentNumber": "77",
                    "code": "BOT",
                    "url": "http://en.wikipedia.org/wiki/Valtteri_Bottas",
                    "givenName": "Valtteri",
                    "familyName": "Bottas",
                    "dateOfBirth": "1989-08-28",
                    "nationality": "Finnish"
                },
                {
                    "driverId": "button",
                    "permanentNumber": "22",
                    "code": "BUT",
                    "url": "http://en.wikipedia.org/wiki/Jenson_Button",
                    "givenName": "Jenson",
                    "familyName": "Button",
                    "dateOfBirth": "1980-01-19",
                    "nationality": "British"
                  }
            ]
        }
    }
}

1)我想找到driverId“alonso”的永久号码,假设它并不总是在每个请求中首先出现。即每次发出请求时阵列重新洗牌。这里的逻辑是获取driverId alonso的数组计数并将其插入到下面的查询中

“MRData.DriverTable.Drivers [在这里插入alonso的数组计数] .permanentNumber”

2)我想获得小于20的永久号码。我还想得到永久号码小于20的司机的驱动程序。

非常感谢观看!

3 个答案:

答案 0 :(得分:0)

尝试构建类" MRData"和"司机"包含所有必要参数。

org.jsonGSON发挥魔力。你应该真正关注Lars提到的How to parse JSON in Java

答案 1 :(得分:0)

class MovieShow extends Component{
  constructor(props){
    super(props);
  }

  renderUsers(){
    ...
  }
  render(){
    return(

       ...
       <HasRole requireRole={["admin"]}>
           {() => {return this.renderUsers()}}
       </HasRole>

  }
}

如果我能用更好的方式写这个,请告诉我。 非常感谢!

答案 2 :(得分:0)

将数据编组到POJO中,并检查那里的字段值,或使用类似[JSONPath] [1]的内容。

int permanentNumber = JSONPath.read(json, "$..Drivers[?(@.driverId == 'alonso')].permanentNumber");

免责声明,我目前没有运行此环境的环境,但他们的文档相当不错。