/ / Verwenden von Json.NET zum Analysieren des von Google Maps API zurückgegebenen Ergebnisses - asp.net, google-maps, json.net

Verwenden von Json.NET zum Analysieren des Ergebnisses, das von Google Maps API zurückgegeben wird - asp.net, google-maps, json.net

Ich versuche, den Webdienst von Google Map Api zu verwenden, um eine Webanforderung zu erstellen und die Json-Zeichenfolge zu erhalten. Anschließend wird der Breiten- und Längengrad angezeigt, den ich für die eingegebene Adresse benötige.

Alles ist gut. Ich habe die Json-Saite, die ich brauche.

Jetzt verwende ich Json.net, um die Zeichenfolge zu analysieren.

Ich weiß nicht warum, aber ich kann es einfach nicht in eine konvertieren JArray.

Hier ist die Json-Saite Bildbeschreibung hier eingeben

Kann mir jemand beibringen, wie man den c # -Code schreibt, um den zu bekommen lat und lng im geometry > location?

Vielen Dank

Hier sind meine Codes und der Bug-Screenshot

Bildbeschreibung hier eingeben

Antworten:

2 für die Antwort № 1

Sie haben einige Optionen, wenn Sie JSON.NET zum Analysieren des JSON verwenden.

Die beste Option, IMHO, ist die Verwendung der Serialisierung, um das Objekt wieder in einen strukturierten Typ zu ziehen, den Sie wie jede andere Klasse bearbeiten können. Dafür kannst du sehen Serialisierung in der JSON.NET-Dokumentation (Ich kann auch mehr Details posten, wenn das nicht klar genug ist).

Wenn Sie nur die Adresse packen möchten, so wie SieIn Ihrer Frage aufgeführt, können Sie diese Informationen auch mit der LINQ-Funktion zurückholen. Sie können Code ähnlich dem folgenden verwenden, um den Code abzurufen (der Schlüssel liegt im SelectToken Methode, um die benötigten Details zurückzuziehen).

    Dim json As Newtonsoft.Json.Linq.JObject
json = Newtonsoft.Json.Linq.JObject.Parse(jsonString)
json.SelectToken("results.formatted_address").ToString()

Sie können auch die normale Leistung von Linq verwenden, um den JSON wie erwartet zu durchlaufen. Siehe auch die LINQ-Dokumentation.


1 für die Antwort № 2

[Mir ist klar, dass dies eine alte Frage ist, aber im Ausnahmefall hilft es jemand anderem ...]

Das Problem ist, dass json["results"] ist ein JArray, aber Sie fragen es nicht so ab. Sie müssen einen Array-Index verwenden, um das erste (und in diesem Fall nur) Element abzurufen. Anschließend können Sie auf die darin enthaltenen Objekte zugreifen.

string address = json["results"][0]["formatted_address"].Value<string>();

Um den Breiten- und Längengrad zu erhalten, können Sie Folgendes tun:

JToken location = json["results"][0]["geometry"]["location"];
double lat = location["lat"].Value<double>();
double lng = location["lng"].Value<double>();