0

REST サービスからの json オブジェクト

{
   "destination_addresses" : [ "Chicago, IL, USA" ],
   "origin_addresses" : [ "Syracuse, NY, USA" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "1,090 km",
                  "value" : 1090383
               },
               "duration" : {
                  "text" : "10 hours 21 mins",
                  "value" : 37242
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

JacksonInFiveMinutes のコードを使用する

ObjectMapper マッパー = 新しい ObjectMapper(); Map userData = mapper.readValue(webResource.queryParams(queryParams).get(String.class);, Map.class);

どこ:

webResource.queryParams(queryParams).get(String.class);

REST サービスから json を返します

Json から、2 つのアドレス プロパティと距離プロパティ、および 2 つのステータスが必要です。

私のハッキングの試み:

ObjectMapper mapper = new ObjectMapper();
JsonNode jnode = mapper.readValue(s, JsonNode.class);
jnode.findValue("distance").findValue("value") // 

これにより、探している値が得られます。

これが良い方法かどうかはわかりません

4

1 に答える 1

1

findValue()JSON 文字列に最初の呼び出しが含まれていない場合に NPE が発生する可能性があるため、これら 2 つの呼び出しを連鎖させない方が安全であることを除けば、問題ないように思えます。JsonNode javadoc から:

public abstract JsonNode findValue(String fieldName)

このノードまたはその子ノードで指定された名前の JSON オブジェクト フィールドを検索し、その値を返すメソッド。このノードまたはその子孫に一致するフィールドが見つからない場合は、null を返します

したがって、最初のfindValue()結果を確認し、null でない場合は 2 番目の結果を実行しますfindValue()(これが発生した場合はログに記録して通知します)。

于 2012-11-30T00:46:58.163 に答える