我对JSON,Google API非常陌生。所以请指导。
我正在尝试在“ JAVA”中编写一个通过Restful使用google自定义serch api的应用程序。我开始学习json,并通过[link] 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.
我如何在课堂上定义它们。标题字符串或char是什么类型的数组,这个页面映射是某种惯例或任何网站都可以给出自己的标签。
//类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;
}
最佳答案
我按照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在线|玫瑰,新鲜\ u003cb \ u003eFlowers \ u003c / b \ u003e,植物和礼品\ u003cb \ u003e ... \ u003c / b \ u003e”,
“ link”:“ 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数组纯文本形式的搜索结果的标题。
这看起来像我从一堆结果中得到的String数据类型,所以我不确定为什么引用将其归类为数组
items.snippet数组搜索结果的片段,以纯文本格式。
根据我得到的结果,这看起来也像String数据类型
items.pagemap对象包含此搜索结果的页面地图信息。
items.pagemap.value数组页面地图信息,以此页面地图的名称为键。
items.pagemap.value.value对象实际的页面地图信息。
根据PageMap description,这看起来像网站可以提供的任意键值对数据。
以下是我从测试中获得的一些页面地图,供您参考:
“网页地图”:{
“元数据”:[
{
“ y_key”:“ e887dc108fef83f6”,
“ msvalidate.01”:“ 71957E1C9D33211154243270EB14C63C”
}
]
}
“网页地图”:{
“网站”:[
{
“ type”:“网站”,
“ title”:“ ProFlowers”,
“ description”:“最新鲜的花朵,保证至少持续7天。”,
“ image”:“ http://a1128.g.akamai.net/7/1128/497/0001/images.proflowers.com/pcsite/ProflowersLogo_nb.gif”,
“ url”:“ http://www.proflowers.com/”,
“ site_name”:“ ProFlowers”,
“ app_id”:“ 180475245301608”
}
],
“元数据”:[
{
“ msnbot”:“ NOODP”,
“ msvalidate.01”:“ 77940E049C181974C3AA656C72688B4C”
}
]
}
“网页地图”:{
“元数据”:[
{
“ viewport”:“宽度=设备宽度;初始比例= 1.0;最大比例= 1.0;”
}
]
由于pagemap非常非结构化,因此我会将它们存储为Map<String, JSONObject> pagemap
。如您所见,我只是将原始JSONObject保留在页面地图中,以便万一需要时可以随时提取它。除非有一组定义,否则我们很难在页面地图及其字段中放入哪种类型,很难将页面地图的值表示为“类”。