Prise en charge de Newtonsoft.Json pour la bibliothèque Microsoft.Spatial pour .NET (préversion)

Le package Microsoft.Spatial contient des classes et des méthodes qui prennent en charge les opérations géographiques et géométriques. Cette bibliothèque contient des convertisseurs dépendant du package Newtonsoft.Json à utiliser avec Microsoft.Spatial lors de l’utilisation du Kit de développement logiciel (SDK) Azure pour .NET.

Prise en main

Installez ce package si vous utilisez le package Microsoft.Spatial dans votre application et que vous souhaitez sérialiser les classes prises en charge avec Newtonsoft.Json.

Installer le package

Installez ce package à partir de NuGet à l’aide de l’interface CLI .NET :

dotnet add package Microsoft.Azure.Core.Spatial.NewtonsoftJson

Concepts clés

Ce package de support contient la NewtonsoftJsonMicrosoftSpatialGeoJsonConverter classe qui peut être ajoutée à JsonSerializerSettings pour désérialiser des objets géographiques tels que GeographyPoint. Ce convertisseur peut être utilisé avec les bibliothèques clientes du KIT de développement logiciel (SDK) Azure, comme illustré dans les exemples ci-dessous.

Exemples

Le package Azure.Search.Documents est utilisé dans des exemples pour montrer comment les résultats de recherche contenant des points géographiques peuvent être désérialisés. Pour plus d’informations et pour obtenir des exemples d’utilisation d’Azure.Search.Documents, consultez son FICHIER README.

Désérialisation des documents

Considérez une classe de modèle contenant des informations sur les montagnes :

public class Mountain
{
    [SimpleField(IsKey = true)]
    public string Id { get; set; }

    [SearchableField(IsSortable = true, AnalyzerName = LexicalAnalyzerName.Values.EnLucene)]
    public string Name { get; set; }

    [SimpleField(IsFacetable = true, IsFilterable = true)]
    public GeographyPoint Summit { get; set; }
}

L’ajout de la NewtonsoftJsonMicrosoftSpatialGeoJsonConverter classe aux options de sérialiseur désérialise correctement l’emplacement du sommet :

// Get the Azure Cognitive Search endpoint and read-only API key.
Uri endpoint = new Uri(Environment.GetEnvironmentVariable("SEARCH_ENDPOINT"));
AzureKeyCredential credential = new AzureKeyCredential(Environment.GetEnvironmentVariable("SEARCH_API_KEY"));

// Create serializer options with our converter to deserialize geographic points.
JsonSerializerSettings serializerSettings = new JsonSerializerSettings
{
    ContractResolver = new CamelCasePropertyNamesContractResolver(),
    Converters =
    {
        new NewtonsoftJsonMicrosoftSpatialGeoJsonConverter()
    }
};

SearchClientOptions clientOptions = new SearchClientOptions
{
    Serializer = new NewtonsoftJsonObjectSerializer(serializerSettings)
};

SearchClient client = new SearchClient(endpoint, "mountains", credential, clientOptions);
Response<SearchResults<Mountain>> results = client.Search<Mountain>("Rainier");

foreach (SearchResult<Mountain> result in results.Value.GetResults())
{
    Mountain mountain = result.Document;
    Console.WriteLine("https://www.bing.com/maps?cp={0}~{1}&sp=point.{0}_{1}_{2}",
        mountain.Summit.Latitude,
        mountain.Summit.Longitude,
        Uri.EscapeUriString(mountain.Name));
}

Si vous recherchez un index rempli de montagnes, les éléments suivants peuvent être imprimés :

https://www.bing.com/maps?cp=46.85287~-121.76044&sp=point.46.85287_-121.76044_Mount%20Rainier

Contribution

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.

Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous n’aurez besoin de le faire qu’une seule fois sur tous les dépôts à l’aide de notre CLA.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.

Impressions