Java разбирает строку файла Json, чтобы вернуть часть строки - PullRequest
0 голосов
/ 03 декабря 2018

У меня возникли проблемы при попытке выяснить, как проанализировать строку в файле json, чтобы она возвращала только часть строки в виде строки.Ниже я проиллюстрирую:

public String GetDistance(String origin, String destination) throws MalformedURLException, IOException {

    //URL url = new URL("https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins" + origin + ",UK+destination=" + destination + ",UK&key=mykey");
    URL url = new URL("https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Cornwall,UK&destinations=London,UK&key=mykey");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    String line, outputString = "";
    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    while ((line = reader.readLine()) != null) {

        if (line.contains("distance")) {
            outputString = reader.readLine().trim();

            return outputString;
        }

    }

    return outputString;
}

Эта функция создает файл json в моем браузере с помощью API Карт Google:

{
   "destination_addresses" : [ "London, UK" ],
   "origin_addresses" : [ "Cornwall, UK" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "284 mi",
                  "value" : 456443
               },
               "duration" : {
                  "text" : "4 hours 52 mins",
                  "value" : 17530
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

В настоящее время outputString возвращает строку:текст ":" 284 мили ".Тем не менее, желаемый результат - просто вернуть мили, «284».

Я знаю, что это, скорее всего, повторная публикация, однако я искал решение этой проблемы и не смог реализовать что-тоэто работает.

Любая помощь по этому вопросу будет принята с благодарностью, Приветствия.

1 Ответ

0 голосов
/ 03 декабря 2018

У вас может быть 2 решения:

  1. Разобрать JSON и обработать его как объект, а затем просто вернуть искомую строку.

  2. Разделить строку следующим образом:

    outputString = reader.readLine().trim();
    

    Эта строка выше возвращает "текст": "284 мили"

    Затем необходимо разделить строку::

    outputString.split(":")
    

    Это должно создать массив из 2 строк: "text" и "284 mi"

    Затем взять вторую строку и разделить ее пробелом и возьмите первую строку:

    outputString.split("\\s")
    

    Теперь у вас есть: "284

    Затем просто верните ее из субиндекса 1 до конца, см. docs :

    outputString.substring(1)
    

    А потом просто сложите все вместе:

    return outputString.split(":")[1].split("\\s")[0].substring(1)
    

Я не пробовал вышеуказанный код, но он должен работать.

Кстати Соглашения об именах Java

  • firstWordLowerCaseVariable
  • firstWordLowerCaseMethod ()
  • FirstWordUpperCaseClass
  • ALL_WORDS_UPPER_CASE_54ON *5555*

    И использовать их последовательно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...