2016-12-11 7 views
0

私はGoogleの距離行列応答を反復しようとしています。私はjavaを使用して距離値(kms)を取得したい。私はJavaの新機能です。Googleマップの距離行列応答APIをJavaで反復する

{ 
      "destination_addresses" : [ 
       "Service Rd, Muneswara Nagar, Sector 6, Koramangala, Bengaluru, Karnataka 560034, India" 
      ], 
      "origin_addresses" : [ 
       "1, 16th Main Rd, BTM 2nd Stage, Kuvempu Nagar, Stage 2, BTM 2nd Stage, Bengaluru, Karnataka 560029, India" 
      ], 
      "rows" : [ 
       { 
       "elements" : [ 
        { 
         "distance" : { 
          "text" : "4.0 km", 
          "value" : 4035 
         }, 
         "duration" : { 
          "text" : "18 mins", 
          "value" : 1060 
         }, 
         "status" : "OK" 
        } 
       ] 
       } 
      ], 
      "status" : "OK" 
} 

上記の応答から、私は 'distance.text'値を取得したいと思います。どのように私はjavaでそれを行うのですか?

ありがとう、

+0

キャプチャ付きの正規表現を使用すると、痛みを最小限に抑えることができます。[RegEx](https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern)の新機能ではありません。 .html)もあります。 – greybeard

+0

(どのようなプログラミング言語でそれをやっていますか?手で "擬似コード"をどうやってやっていますか?) – greybeard

答えて

1

質問は非常に一般的なので、私は同じように答えるつもりです。これを達成する方法にはいくつかの異なる方法があります。 Googleの距離マトリックスを使用すると、xmlとJSONの応答のいずれかを選択できます。 xmlレスポンスの場合は、JAXBを使用してxmlをクラスに変換し、JSONの場合はJACKSONを使用してそれを行うことができます。この後、その特定のクラスのその値から読み取らなければなりません。

1

これを行う方法はいくつかあります。私の好みの方法は、jsonレスポンスを「モデル化」するModelクラスを作成することです。これは次のようにして行われます。

public class GoogleDistanceMatrixApiResponse { 

List<Rows> rows; 
private List<String> destination_addresses; 
private List<String> origin_addresses; 

public List<String> getDestination_addresses() { 
    return destination_addresses; 
} 

public List<String> getOrigin_addresses() { 
    return origin_addresses; 
} 

public List<Rows> getRows() { 
    return rows; 
} 

static class Rows { 
    List<Element> elements; 

    public List<Element> getElements() { 
     return elements; 
    } 
} 


class Element { 

    Distance distance; 
    Duration duration; 

    public Distance getDistance() { 
     return distance; 
    } 

    public Duration getDuration() { 
     return duration; 
    } 
} 

class Distance { 
    String text; 
    String value; 

    public String getText() { 
     return text; 
    } 

    public String getValue() { 
     return value; 
    } 
} 

class Duration { 
    String text; 
    String value; 

    public String getText() { 
     return text; 
    } 

    public String getValue() { 
     return value; 
    } 

} 

これにより、モデルクラスをGSONに渡すことで、応答を単純に逆シリアル化できます。これはあなたのためにすべてのハードワークを行います。あなたはその後、単に次の行を書くのです

を(あなたのプロジェクトにGSON依存性やjarファイルをインポートする必要があります):

GoogleDistanceMatrixApiResponse response = gson.fromJson(json, 
GoogleDistanceMatrixApiResponse.class); 

あなたはその後、取得することができます (JSON変数はJSONレスポンスです)距離:

 String distance = 
response.getRows().get(0).getElements().get(0).getDistance().getText( 
).replace("mi", "miles"); 

これを行うには他にも方法がありますが、私は個人的にはこれが最適だと思います! お手伝いをしてください。

関連する問題