JsonをJavaオブジェクトで解析し、destination_addresses、origin_addresses、およびdurationの各フィールドを保存する必要があります。私は "期間"の値を取得することはできません。これは私が解析する必要がJSONです:DistanceMatrixからネストされた配列JsonをJavaに解析するGSONを使用したGoogle Api
{
"destination_addresses" : [ "Blocco Palma Primo, 95121 Fattoria Sole Delfino CT, Italia" ],
"origin_addresses" : [
"Unnamed Road, 95121 Catania CT, Italia",
"Blocco Palma Primo, 95121 Fattoria Sole Delfino CT, Italia",
"Contrada Torre Allegra, 95121 Catania CT, Italia",
"Contrada Pantano d'Arci, Catania CT, Italia",
"Unnamed Road, 95121 Catania CT, Italia",
"Via Cassia, 95121 Catania CT, Italia",
"Contrada Pantano d'Arci, Catania CT, Italia",
"Contrada Pantano d'Arci, Catania CT, Italia",
"Contrada Pantano d'Arci, Catania CT, Italia",
"Contrada Pantano d'Arci, Catania CT, Italia"
],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "2,0 km",
"value" : 2037
},
"duration" : {
"text" : "4 min",
"value" : 266
},
"status" : "OK"
}
]
},
{
"elements" : [
{
"distance" : {
"text" : "1 m",
"value" : 0
},
"duration" : {
"text" : "1 min",
"value" : 0
},
"status" : "OK"
}
]
},
{
"elements" : [
{
"distance" : {
"text" : "3,8 km",
"value" : 3768
},
"duration" : {
"text" : "7 min",
"value" : 400
},
"status" : "OK"
}
]
},
{
"elements" : [
{
"distance" : {
"text" : "5,3 km",
"value" : 5304
},
"duration" : {
"text" : "6 min",
"value" : 374
},
"status" : "OK"
}
]
},
{
"elements" : [
{
"distance" : {
"text" : "8,2 km",
"value" : 8239
},
"duration" : {
"text" : "13 min",
"value" : 785
},
"status" : "OK"
}
]
},
{
"elements" : [
{
"distance" : {
"text" : "11,5 km",
"value" : 11486
},
"duration" : {
"text" : "15 min",
"value" : 901
},
"status" : "OK"
}
]
},
{
"elements" : [
{
"distance" : {
"text" : "12,2 km",
"value" : 12226
},
"duration" : {
"text" : "18 min",
"value" : 1099
},
"status" : "OK"
}
]
},
{
"elements" : [
{
"distance" : {
"text" : "12,2 km",
"value" : 12226
},
"duration" : {
"text" : "18 min",
"value" : 1099
},
"status" : "OK"
}
]
},
{
"elements" : [
{
"distance" : {
"text" : "12,2 km",
"value" : 12226
},
"duration" : {
"text" : "18 min",
"value" : 1099
},
"status" : "OK"
}
]
},
{
"elements" : [
{
"distance" : {
"text" : "12,2 km",
"value" : 12226
},
"duration" : {
"text" : "18 min",
"value" : 1099
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
そして、これは私が必要なフィールドを取得するには、Javaで試したものです。これらのクラスでは
public static void main(String[] args) throws Exception {
// TODO code application logic here
URL url = new URL(myUrl);
InputStreamReader reader = new InputStreamReader(url.openStream());
SRD sr = new Gson().fromJson(reader, SRD.class);
System.out.println("destination: " + sr.destination_addresses.get(0));
System.out.println("origins: " + sr.origin_addresses.get(2));
System.out.println(sr.rows.get(2).elements.get(0).toString());
}
:
private class SRD {
List<String> destination_addresses;
List<String> origin_addresses;
List<elements> rows;
}
private class elements {
List<duration> elements;
}
private class duration {
String text;
int value;
public String toString() {
return "duration{" + "text=" + text + ", value=" + value + '}';
}
}
このコードを実行すると、次の出力が得られます。
destination: Blocco Palma Primo, 95121 Fattoria Sole Delfino CT, Italy
origins: Contrada Torre Allegra, 95121 Catania CT, Italy
duration{text=null, value=0}
明らかに、フィールドdestination_addressesとorigin_addressesの解析は正常に実行できますが、その期間は0とnullが与えられます。どこが間違っていますか?どのようにしてこの問題を解決し、持続時間の正しい値(テキストと値)を得ることができますか?お手伝いありがとうございます。
「要素」は、フィールド期間(あるオブジェクトのテキスト/値)を持つオブジェクトで、期間のリストではありません。 http://www.jsonschema2pojo.org/あなたに役立つかもしれない –
私のクラス "要素"の内容を 'duration duration;メインのprintlnを 'System.out.println(sr.rows.get(2).duration.toString());'実行はエラーで失敗します。スレッド "main"の_Exception例外NullPointerException \t、proveJson.SingleRouteParse.main(SingleRouteParse.java:35)_。私はNetbeansのヒントに従ってこのprintlnを書いています。 – Ennio
jsonのためにリストを使用する前に、要素の後に角括弧[ – Ennio