Problème de conversion JSON à la classe en java (google recherche personnalisée)
-
22-10-2019 - |
Question
Je suis très nouveau pour JSON, google api. Alors, s'il vous plaît guide.
Je suis en train d'écrire une application dans « JAVA » qui utiliserait serch Google Custom api par reposants. Je commencé à apprendre JSON et en passant par [lien] http://code.google.com /apis/customsearch/v1/overview.html je voulais écrire un code.
Cela montre le JSON de recherche google:
http://code.google.com/apis/customsearch/v1/reference .html # method_search_cse_list
http://code.google.com/apis/customsearch/ v1 / reference.html
A partir de la référence que j'ai trouvé que les champs de cette CustomSearch seraient cordes ou int ou tout autre type de données. Ils ont également défini la structure de chaque objet.
Mais je suis confronté à des problèmes avec certains types de données:
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.
Comment pourrais-je les définir dans ma classe. ce type de tableau est une chaîne de titre ou char et ce pagemap est une convention ou un site peut donner ses propres balises.
// CustomSearch class
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
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;
}
La solution
Je publié une recherche à l'aide réelle ma clé comme suggéré dans l'exemple de Google:
GET https://www.googleapis.com/customsearch/v1?key=INSERT-YOUR-KEY&cx=013036536707430787589:_pqjad5hr1a&q=flowers&alt=json
Et voici ce que je reçois (montrant juste bit de données)
items": [ { "kind": "customsearch#result", "title": "FTD.COM - Flowers Online | Roses, Fresh Flowers, Plants and Gift ...", "htmlTitle": "FTD.COM - \u003cb\u003eFlowers\u003c/b\u003e Online | Roses, Fresh \u003cb\u003eFlowers\u003c/b\u003e, Plants and Gift \u003cb\u003e...\u003c/b\u003e", "link": "http://www.ftd.com/", "displayLink": "www.ftd.com", "snippet": "Aug 2, 2011 ... Order flowers online for same day floral delivery. Shop for flowers, chocolates, roses, gifts and gift baskets by occasion, season or get beautiful ...", "htmlSnippet": "Aug 2, 2011 \u003cb\u003e...\u003c/b\u003e Order \u003cb\u003eflowers\u003c/b\u003e online for same day floral delivery. Shop for \u003cb\u003eflowers\u003c/b\u003e, chocolates, \u003cbr\u003e roses, gifts and gift baskets by occasion, season or get beautiful \u003cb\u003e...\u003c/b\u003e", "cacheId": "D_MQAIEeVpAJ", "pagemap": { "metatags": [ { "y_key": "e887dc108fef83f6", "msvalidate.01": "71957E1C9D33211154243270EB14C63C" } ] } ......
Il ressemble à:
items.title array The title of the search result, in plain text.
Cela ressemble à un type de données chaîne de groupe de résultats que je reçois, donc je ne sais pas pourquoi la référence a classé comme tableau
items.snippet array The snippet of the search result, in plain text.
Cela ressemble à un type de données chaîne ainsi des résultats que j'ai eu
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.
Basé sur le PageMap Description cela ressemble à un arbitraire valeur clé de données paire que le site pourrait fournir.
Voici quelques-unes des PageMap que je reçois de mon test pour votre référence:
"pagemap": { "metatags": [ { "y_key": "e887dc108fef83f6", "msvalidate.01": "71957E1C9D33211154243270EB14C63C" } ] } "pagemap": { "website": [ { "type": "website", "title": "ProFlowers", "description": "The freshest flowers, guaranteed to last at least 7 days.", "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" } ], "metatags": [ { "msnbot": "NOODP", "msvalidate.01": "77940E049C181974C3AA656C72688B4C" } ] } "pagemap": { "metatags": [ { "viewport": "width=device-width; initial-scale=1.0; maximum-scale=1.0;" } ]
pagemap est très peu structurée je les stocker Map<String, JSONObject> pagemap
. Comme vous pouvez le voir que je viens de garder le JSONObject original pagemap donc au cas où si vous en avez besoin, vous pouvez toujours l'extraire. À moins d'un ensemble de définitions de quel type que nous pourrions mettre en pagemap avec ses champs, ce qui représente la valeur de la pagemap en tant que classe pourrait être difficile.