Compatibilidad de System.Text.Json con la biblioteca Microsoft.Spatial para .NET
El paquete Microsoft.Spatial contiene clases y métodos que admiten operaciones geográficas. Esta biblioteca contiene convertidores que dependen de System.Text.Json para su uso con Microsoft.Spatial cuando se usa el SDK de Azure para .NET.
Introducción
Instale este paquete si usa el paquete Microsoft.Spatial en la aplicación y desea serializar las clases admitidas con System.Text.Json.
Instalar el paquete
Instale este paquete desde NuGet mediante la CLI de .NET:
dotnet add package Microsoft.Azure.Core.Spatial
Conceptos clave
Este paquete de compatibilidad contiene la MicrosoftSpatialGeoJsonConverter
clase que se puede agregar a JsonSerializerOptions para deserializar objetos geográficos como GeographyPoint
. Este convertidor se puede usar con bibliotecas cliente del SDK de Azure, como se muestra en los ejemplos siguientes.
Ejemplos
El paquete Azure.Search.Documents se usa en ejemplos para mostrar cómo se pueden deserializar los resultados de búsqueda que contienen puntos geográficos. Para obtener más información y ejemplos con Azure.Search.Documents, consulte su archivo Léame.
Deserialización de documentos
Considere una clase de modelo que contiene información sobre las montañas:
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; }
}
Al agregar la MicrosoftSpatialGeoJsonConverter
clase a las opciones del serializador, se deserializará correctamente la ubicación de la cumbre:
// 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.
JsonSerializerOptions serializerOptions = new JsonSerializerOptions
{
Converters =
{
new MicrosoftSpatialGeoJsonConverter()
},
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
SearchClientOptions clientOptions = new SearchClientOptions
{
Serializer = new JsonObjectSerializer(serializerOptions)
};
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 se busca un índice lleno de montañas, se puede imprimir lo siguiente:
https://www.bing.com/maps?cp=46.85287~-121.76044&sp=point.46.85287_-121.76044_Mount%20Rainier
Contribuciones
Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más detalles, visite https://cla.microsoft.com.
Cuando se envía una solicitud de incorporación de cambios, un bot de CLA determinará de forma automática si tiene que aportar un CLA y completar la PR adecuadamente (por ejemplo, la etiqueta, el comentario). Solo siga las instrucciones que le dará el bot. Solo tendrá que hacerlo una vez en todos los repositorios mediante nuestro CLA.
Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.
Azure SDK for .NET