使用java数组从json文件获取api参数

使用java数组从json文件获取api参数,java,json,file,vert.x,Java,Json,File,Vert.x,我有一个json文件,它不仅包含我的api。我是json新手,试图从该文件中获取api参数 "operators": { "tez" : { "api": "www.my-tour.com/search/getResult", "parameters": [ { "country": "Canada", "queryParameters": { "priceMin": ["0"],

我有一个json文件,它不仅包含我的api。我是json新手,试图从该文件中获取api参数

"operators": {
    "tez" : {
      "api": "www.my-tour.com/search/getResult",
      "parameters": [
        {
          "country": "Canada",
          "queryParameters": {
            "priceMin": ["0"],
            "priceMax":["150000"],
            "currency":["5561"],
            "nightsMin":[1,2,3,4,5,6,7,8,9,10,11,12,13], 
            "nightsMax":[1,2,3,4,5,6,7,8,9,10,11,12,13]
在我的应用程序中,运营商只是简单的拥有api的公司,所以我有很多运营商,所以“tez”是公司的名称,下面是它的api和参数

@Override
    public JsonObject fetchData(String url) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.DAY_OF_MONTH, 20);
        for (int i = 1; i <= 180; i++) {
            String formattedDate = dateFormat.format(calendar);
            url += "&after=" + formattedDate + "&before=" + formattedDate;
           // how can i get the api iteratively to get all api param
            JsonObject json = new JsonObject().getJsonObject("tez");
            // TODO call eternal API here
            JSONParser  parser = new JSONParser();
            JsonObject a = null;
            try {
                FileReader fileReader = new FileReader("\\home\\user\\MyProjects\\MicroserviceBoilerPlate\\src\\config\\local_file.json");
                a = (JsonObject) parser.parse(fileReader);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
@覆盖
公共JsonObject获取数据(字符串url){
日历=Calendar.getInstance();
calendar.setTime(新日期());
calendar.add(calendar.DAY,每月20日);

对于(inti=1;i,您可以在文件中创建JSON属性的对象

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import java.util.List;

@JsonIgnoreProperties(ignoreUnknown = true)
public class TezModel {
    public Operators operators;

    public String getApi() {
        return operators.tez.api;
    }

    public List<String> getPriceMin() {
        return operators.tez.parameters.get(0).queryParameters.priceMin;
    }

    public List<String> getPriceMax() {
        return operators.tez.parameters.get(0).queryParameters.priceMax;
    }

    public List<String> getCurrency() {
        return operators.tez.parameters.get(0).queryParameters.currency;
    }

    public List<Integer> getNightsMin() {
        return operators.tez.parameters.get(0).queryParameters.nightsMin;
    }

    public List<Integer> getNightsMax() {
        return operators.tez.parameters.get(0).queryParameters.nightsMax;
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Operators {
        public Tez tez;
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Tez {
        public String api;
        public List<Parameters> parameters;
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Parameters {
        public String country;
        public QueryParameters queryParameters;
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class QueryParameters {
        public List<String> priceMin;
        public List<String> priceMax;
        public List<String> currency;
        public List<Integer> nightsMin;
        public List<Integer> nightsMax;
    }
}

@克里斯托弗·克劳森(Christopher Clausen)在编写get(0)时,这不是一点硬编码。其他值可能是for循环或其他什么?\n是的,get(0)只检索第一个值。您可以通过数组循环来获取所需的值。如果您给我一个所需值的示例,我可以更新答案。
public static void main(String[] args) throws IOException {
    ObjectMapper mapper = new ObjectMapper();
    TezModel tezModel = mapper.readValue(new File("local_file.json"), TezModel.class);
    String api = tezModel.getApi()+ "+priceMin="
            + tezModel.getPriceMin().get(0)
            + "&priceMax=" + tezModel.getPriceMax().get(0)
            + "&currency=+" + tezModel.getCurrency().get(0)
            +  "nightsMin=" + tezModel.getNightsMin().get(0)
            + "nightsMax=" + tezModel.getNightsMax().get(0);
    System.out.println(api);
}