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.

Impressões