1

私はjson、googleapisに非常に慣れていません。だからご案内ください。
Restfulを介してgoogleカスタムserchapiを使用するアプリケーションを「JAVA」で作成しようとしています。私はjsonを学び始め、[リンク] http://code.google.com/apis/customsearch/v1/overview.htmlを通過しました。コードを書きたかったのです。

これは、Googleの検索のjsonを示しています:
http ://code.google.com/apis/customsearch/v1/reference.html#method_search_cse_list

参照はhttp://code.google.com/apis/customsearch/v1/reference.htmlです

参照から、このCustomSearchのどのフィールドがString、int、またはその他のデータ型になるかを見つけました。また、すべてのオブジェクトの構造も定義されています。

しかし、私はいくつかのデータ型で問題に直面しています:

items.title     array   The title of the search result, in plain text.
items.snippet   array   The snippet of the search result, in plain text.
items.pagemap   object  Contains pagemap information for this search result.    
items.pagemap.value     array   Pagemap information, keyed by the name of this pagemap.     
items.pagemap.value.value   object  The actual pagemap information.

クラスでそれらをどのように定義しますか。タイトル文字列または文字とはどのような配列であり、このページマップは慣例であるか、どのサイトでも独自のタグを付けることができます。

//クラスCustomSearch

public class CustomSearch {
public URL getURL() throws MalformedURLException{
    return url.getURL();
}

@Key ("items") ArrayList<SearchResult> results;
private @Key SearchURL url;
private @Key Query queries; 

}

// クラス

class SearchResult {
public SearchResult(){        
}

public String getTitle(){
    return title;
}
public String getLink(){
    return link;
}
public String getSnippet(){
    return snippet;
}

private @Key String title;   // is this right ?
private @Key String htmlTitle;
private @Key String link;
private @Key String snippet;   // is this right ?
private @Key String htmlSnippet;    

}

4

1 に答える 1

1

Googleの例で提案されているように、キーを使用して実際の検索を発行しました:

GET https://www.googleapis.com/customsearch/v1?key=INSERT-YOUR-KEY&cx=013036536707430787589:_pqjad5hr1a&q=flowers&alt=json

そして、これが私が得たものです(ほんの少しのデータを示しています)

アイテム": [
  {
   "kind": "customsearch#result",
   "title": "FTD.COM - オンラインの花 | バラ、生花、植物、ギフト ...",
   "htmlTitle": "FTD.COM - \u003cb\u003eFlowers\u003c/b\u003e Online | Roses, Fresh \u003cb\u003eFlowers\u003c/b\u003e, Plants and Gift \u003cb\u003e...\u003c/b\ u003e",
   "リンク": "http://www.ftd.com/",
   "displayLink": "www.ftd.com",
   "snippet": "2011 年 8 月 2 日 ... オンラインで花を注文すると、即日配達されます。花、チョコレート、バラ、ギフト、ギフト バスケットを機会や季節ごとに購入したり、美しくしたりできます ...",
   "htmlSnippet": "2011 年 8 月 2 日 \u003cb\u003e...\u003c/b\u003e オンラインで \u003cb\u003eflowers\u003c/b\u003e を注文すると、同日の花を配達できます。\u003cb\u003eflowers\u003c/b を購入\u003e, チョコレート, \u003cbr\u003e バラ, 贈り物や贈り物のバスケットは、機会、季節、または美しくなる \u003cb\u003e...\u003c/b\u003e",
   "cacheId": "D_MQAIEeVpAJ",
   "ページマップ": {
    "メタタグ": [
     {
      "y_key": "e887dc108fef83f6",
      "msvalidate.01": "71957E1C9D33211154243270EB14C63C"
     }
    ]
   }
  ……

次のようになります。

items.title 配列 プレーン テキストでの検索結果のタイトル。

これは、取得した一連の結果からの文字列データ型のように見えるため、参照がそれを配列として分類した理由がわかりません

items.snippet 配列 プレーン テキストでの検索結果のスニペット。

これは、得られた結果からも String データ型のように見えます

items.pagemap オブジェクト この検索結果のページマップ情報が含まれています。    
items.pagemap.value 配列 このページマップの名前をキーにしたページマップ情報。     
items.pagemap.value.value オブジェクト 実際のページマップ情報。

PageMapの説明に基づくと、これは Web サイトが提供できる任意のキーと値のペアのデータのように見えます。

以下は、参考のためにテストから取得したページマップの一部です。

"ページマップ": {
    "メタタグ": [
     {
      "y_key": "e887dc108fef83f6",
      "msvalidate.01": "71957E1C9D33211154243270EB14C63C"
     }
    ]
   }

 "ページマップ": {
    "Webサイト": [
     {
      "タイプ": "ウェブサイト",
      "タイトル": "プロフラワーズ",
      "description": "最低 7 日間は保証される最も新鮮な花。",
      "画像": "http://a1128.g.akamai.net/7/1128/497/0001/images.proflowers.com/pcsite/ProflowersLogo_nb.gif",
      "url": "http://www.proflowers.com/",
      "site_name": "プロフラワーズ",
      "app_id": "180475245301608"
     }
    ]、
    "メタタグ": [
     {
      "msnbot": "NOODP",
      "msvalidate.01": "77940E049C181974C3AA656C72688B4C"
     }
    ]
   }

  "ページマップ": {
    "メタタグ": [
     {
      "viewport": "幅=デバイスの幅; 初期スケール=1.0; 最大スケール=1.0;"
     }
    ]

pagemap は非常に構造化されていないため、 として保存しますMap<String, JSONObject> pagemap。ご覧のとおり、元の JSONObject を pagemap に保持しているだけなので、必要に応じていつでも抽出できます。フィールドとともにページマップに入れることができるタイプの定義のセットがない限り、ページマップの値をクラスとして表すのは難しい場合があります。

于 2011-09-07T12:15:56.863 に答える