WedX - журнал о программировании и компьютерных науках

Получить параметр API из файла json java с массивами

У меня есть файл 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();
            }

Это то, что я придумал, но это неправильно, я не могу получить доступ к файлу json и как я могу перебирать параметры, чтобы добавить их в API www.my-tour.com/search/getResult?priceMin =0&priceMax=150000¤cy=+значение &nightsMin= + значение &nightsMax=+значения и т. д.

Примечание. Это приложение vertx, и я использую JsonObject и другие API, специфичные для Json.

07.07.2018

Ответы:


1

Вы можете просто создать объект свойств 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;
    }
}

И тогда вы можете добавить свои параметры в строку, используя jackson databind

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);
}
07.07.2018
  • @Christopher Clausen, это не сложное кодирование, когда вы пишете get (0), что происходит с другими значениями, может быть цикл for или что-то в этом роде? \ 09.07.2018
  • Да, get(0) извлекает только первые значения. Вы можете перебирать массивы, чтобы получить нужные значения. Если вы дадите мне пример значений, которые вам нужны, я могу обновить ответ. 09.07.2018
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]