Suporte do System.Text.Json para a biblioteca Microsoft.Spatial para .NET
O pacote Microsoft.Spatial contém classes e métodos que dão suporte a operações geográficas. Essa biblioteca contém conversores dependentes de System.Text.Json para uso com Microsoft.Spatial ao usar o SDK do Azure para .NET.
Introdução
Instale esse pacote se você usar o pacote Microsoft.Spatial em seu aplicativo e quiser serializar classes com suporte com System.Text.Json.
Instalar o pacote
Instale esse pacote do NuGet usando a CLI do .NET:
dotnet add package Microsoft.Azure.Core.Spatial
Principais conceitos
Esse pacote de suporte contém a MicrosoftSpatialGeoJsonConverter
classe que pode ser adicionada a JsonSerializerOptions para desserializar objetos geográficos como GeographyPoint
. Esse conversor pode ser usado com bibliotecas de cliente do SDK do Azure, conforme mostrado nos exemplos abaixo.
Exemplos
O pacote Azure.Search.Documents é usado em exemplos para mostrar como os resultados da pesquisa que contêm pontos geográficos podem ser desserializados. Para obter mais informações e exemplos usando Azure.Search.Documents, consulte seu LEIAME.
Desserializando documentos
Considere uma classe de modelo que contém informações sobre montanhas:
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; }
}
Adicionar a MicrosoftSpatialGeoJsonConverter
classe às opções do serializador desserializará corretamente o local do summit:
// 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));
}
Se estiver pesquisando um índice cheio de montanhas, o seguinte poderá ser impresso:
https://www.bing.com/maps?cp=46.85287~-121.76044&sp=point.46.85287_-121.76044_Mount%20Rainier
Contribuição
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite https://cla.microsoft.com.
Quando você envia uma solicitação de pull, um bot do CLA determina automaticamente se você precisa fornecer um CLA e preencher a PR corretamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o Código de Conduta ou contate opencode@microsoft.com para enviar outras perguntas ou comentários.
Azure SDK for .NET