ich versuche tatsächlich google map api in golang zu verwenden (mit App Engine urlfetch und wenn ich eine Abfrage ausführen, kann ich nicht das Ergebnis in einer Struktur erhalten mein Code.Parse json von Google api Anfrage in golang mit App Engine auf struct
import (
"google.golang.org/appengine"
"google.golang.org/appengine/log"
"google.golang.org/appengine/urlfetch"
"net/http"
"strings"
"encoding/json"
"encoding/gob"
"bytes"
)
func GetCoordinatesByAddress(request *http.Request) bool {
var results Results
ctx := appengine.NewContext(request)
client := urlfetch.Client(ctx)
resp, err := client.Get("https://maps.googleapis.com/maps/api/geocode/json?address=Suresnes+France"&key=" + ApiKey)
if err != nil {
return false
}
decoder := json.NewDecoder(resp.Body)
decoder.Decode(&results)
log.Debugf(ctx, "", results)
}
type Results struct {
results []Result
status string
}
type Result struct {
address_components []Address
formatted_address string
geometry Geometry
place_id string
types []string
}
type Address struct {
long_name string
short_name string
Type []string `json:"type"`
}
type Geometry struct {
bounds Bounds
location LatLng
location_type string
viewport Bounds
}
type Bounds struct {
northeast LatLng
southwest LatLng
}
type LatLng struct {
lat float64
lng float64
}
Abfrageergebnisse (mit rotation)
{
"results" : [
{
"address_components" : [
{
"long_name" : "Suresnes",
"short_name" : "Suresnes",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Hauts-de-Seine",
"short_name" : "Hauts-de-Seine",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Île-de-France",
"short_name" : "Île-de-France",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "France",
"short_name" : "FR",
"types" : [ "country", "political" ]
},
{
"long_name" : "92150",
"short_name" : "92150",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "92150 Suresnes, France",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 48.88276,
"lng" : 2.2364639
},
"southwest" : {
"lat" : 48.859284,
"lng" : 2.199768
}
},
"location" : {
"lat" : 48.869798,
"lng" : 2.219033
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 48.88276,
"lng" : 2.2364639
},
"southwest" : {
"lat" : 48.859284,
"lng" : 2.199768
}
}
},
"place_id" : "ChIJ584OtMVk5kcR4DyLaMOCCwQ",
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
Abfrageergebnis (mit meinem go-Code)
DEBUG: %!(EXTRA controlgoogle.Results={[] })
Können Sie mir helfen, diese Abfrage-Ergebnisse in einer Struktur zu analysieren?
Danke
Es hilft Ihrem Debuggen, alles außer dem 'status'-Feld zu kommentieren, der unmarshaller wird glücklich unbekannte Felder verwerfen, so dass es ein einfacherer Testfall ist. Sie können den Anfragetext auch mit ['ioutil.ReadAll'] (https://godoc.org/io/ioutil#example-ReadAll) protokollieren. Sie können auch versuchen wollen [ 'http.Get()'] (https://golang.org/pkg/net/http/#Get) – Plato
ich google appengine bin mit, es nicht möglich ist die Verwendung von HTTP .get – Fantasim