Problem bei der Umwandlung von json-Klasse, die in java ( google custom search)
-
22-10-2019 - |
Frage
Ich bin sehr neu in json, google apis.Also bitte guide.
Ich versuche, eine Anwendung zu schreiben, die in 'JAVA', die würden nutzen google custom fast Restful-api, durch.Ich begann zu lernen json und gehen durch [link] http://code.google.com/apis/customsearch/v1/overview.html ich wollte schreiben von code.
Dies zeigt die json-Suche für google:
http://code.google.com/apis/customsearch/v1/reference.html#method_search_cse_list
Referenz http://code.google.com/apis/customsearch/v1/reference.html
Aus der Referenz, die ich gefunden, die Felder dieses CustomSearch wäre, String oder int oder beliebigen anderen Datentyp.Sie haben auch definierte Struktur jedes Objekts.
Aber ich bin mit Problemen konfrontiert, mit einigen Datentypen:
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.
Wie würde ich definieren Sie in meiner Klasse. welche Art von array ist der Titel string oder char und diese pagemap einige übereinkommens oder einer Website kann Ihren eigenen tags .
// Klasse 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
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;
}
Lösung
Ich gab eine echte Suche mit meinem Schlüssel wie vorgeschlagen in Googles Beispiel:
GET https://www.googleapis.com/customsearch/v1?key=INSERT-YOUR-KEY&cx=013036536707430787589:_pqjad5hr1a&q=flowers&alt=json
Und hier ist, was ich bekommen (mit nur wenig Daten)
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" } ] } ......
Es sieht aus wie:
items.title array The title of the search result, in plain text.
Dies sieht aus wie ein String-Datentyp von paar Ergebnisse, die ich bekomme, also bin ich nicht sicher, warum die Referenz klassifiziert es als array
items.snippet array The snippet of the search result, in plain text.
Dies sieht aus wie ein String-Datentyp, sowie aus den Ergebnissen, die ich bekam
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.
Auf der Grundlage der PageMap Beschreibung dies sieht aus wie eine beliebige Schlüssel-Wert-paar Daten, die die website bereitstellen könnte.
Unten sind einige von pagemaps, dass ich von meinem test für Ihre Referenz:
"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;" } ]
Als pagemap ist sehr unstrukturiert würde ich speichern Sie Sie als Map<String, JSONObject> pagemap
.Wie Sie sehen können, dass ich nur halten die original JSONObject in pagemap so im Fall, wenn Sie es brauchen, können Sie immer extrahieren.Es sei denn, es gibt eine Reihe von Definitionen, welche Art konnten wir in pagemap zusammen mit seinen Feldern, repräsentiert der Wert des pagemap als eine Klasse kann schwierig sein.