Comment analyser la réponse de google maps API JSON?
Je veux calculer la distance entre les points en C# avec les cartes google maps matrice de distance de l'API.
J'utilise le code suivant pour faire la demande :
private void MapsAPICall()
{
//Pass request to google api with orgin and destination details
HttpWebRequest request =
(HttpWebRequest)WebRequest.Create("http://maps.googleapis.com/maps/api/distancematrix/json?origins="
+ "51.123959,3.326682" + "&destinations=" + "51.158089,4.145267"
+ "&mode=Car&language=us-en&sensor=false");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
if (!string.IsNullOrEmpty(result))
{
Distance t = JsonConvert.DeserializeObject<Distance>(result);
}
}
}
Et puis je veux parser le json réponse dans la classe de Distance:
public struct Distance
{
//Here I want to parse the distance and duration
}
Voici un exemple de la réponse json-je recevoir :
http://maps.googleapis.com/maps/api/distancematrix/json?origins=Vancouver+BC&destinations=San+Francisco&mode=bicycling&language=fr-FR&sensor=false
Comment puis-je analyser la distance et de la durée dans la classe de Distance?
C'est la première fois que je l'utilise Json donc je ne suis pas expérimenté avec elle.
Ps: j'ai le json.net bibliothèque installée.
OriginalL'auteur Robby Smet | 2012-12-04
Vous devez vous connecter pour publier un commentaire.
Web Essentials a une option pour "Coller le JSON que de classes". Cela va générer les classes dont vous avez besoin pour désérialiser votre JSON.
L'utilisation de cette option générer les éléments suivants pour vous:
(Si vous le souhaitez, vous pouvez refactoriser le code généré pour le rendre plus lisible. Vous aurez besoin d'ajouter Json.NET attributs assurez-vous que la sérialisation est encore à travailler)
Puis à l'intérieur de votre code, vous pouvez utiliser la ligne suivante pour désérialiser votre code:
OriginalL'auteur Wouter de Kort
Mise à jour pour Visual Studio 2015+
Comme un complément à Wouter de Kort du réponse utile, voici une mise à jour pour Visual Studio 2015+.
Visual Studio 2015+ a à portée de main 'Coller JSON que les Classes' que Wouter gentiment décrit.
De générer les classes de l'API GoogleMaps JSON désérialisation vous:
https://maps.googleapis.com/maps/api/distancematrix/json?origins=30.3449153,-81.860543&destinations=33.7676932,-84.4906437&language=en-US&units=imperial&key=<API_KEY>
Ctrl+C
) la crue réponse JSON à partir de votre navigateur/client à votre presse-papiers..cs
fichier dans lequel vous souhaitez créer les classes..cs
fichier où vous souhaitez les classes générées.Exemple de Classes obtenues
À partir de ce moment, vous pouvez suivre le reste de Wouter les conseils de.
OriginalL'auteur Steve Gomez
Il est tard, mais pourrait être utile à quelqu'un. Dans de tels cas, où nous avons une chaîne JSON et veut avoir une bonne structure de classe à désérialiser correctement, vous pouvez utiliser l'outil en ligne http://json2csharp.com/
Il suffit de coller votre chaîne JSON et cliquez sur Générer bouton. Il vous sera fourni avec le nécessaire de la structure de la classe. C'est aussi simple que cela. Cette approche est utile lorsque vous voulez éviter l'installation d'outils externes.
OriginalL'auteur Ajendra Prasad
La "Distance" type devrez correctement le modèle JSON schema e.g:
(et bien sûr, puis la sous-types, comme la
Row
devra également être modélisées)Autre que cela, votre utilisation de Json.Net:
devrait être ok
OriginalL'auteur Chamila Chulatunga