System.Text.Json-Unterstützung für die Microsoft.Spatial-Bibliothek für .NET

Das Microsoft.Spatial-Paket enthält Klassen und Methoden, die geografische Vorgänge unterstützen. Diese Bibliothek enthält Konverter, die von System.Text.Json für die Verwendung mit Microsoft.Spatial bei Verwendung des Azure SDK für .NET abhängig sind.

Erste Schritte

Installieren Sie dieses Paket, wenn Sie das Microsoft.Spatial-Paket in Ihrer Anwendung verwenden und unterstützte Klassen mit System.Text.Json serialisieren möchten.

Installieren des Pakets

Installieren Sie dieses Paket über NuGet mithilfe der .NET CLI:

dotnet add package Microsoft.Azure.Core.Spatial

Wichtige Begriffe

Dieses Unterstützungspaket enthält die MicrosoftSpatialGeoJsonConverter -Klasse, die JsonSerializerOptions hinzugefügt werden kann, um geografische Objekte wie zu GeographyPointdeserialisieren. Dieser Konverter kann mit Azure SDK-Clientbibliotheken verwendet werden, wie in den folgenden Beispielen gezeigt.

Beispiele

Das Azure.Search.Documents-Paket wird in Beispielen verwendet, um zu zeigen, wie Suchergebnisse, die geografische Punkte enthalten, deserialisiert werden können. Weitere Informationen und Beispiele zur Verwendung von Azure.Search.Documents finden Sie in der INFODATEI.

Deserialisieren von Dokumenten

Stellen Sie sich eine Modellklasse vor, die Informationen zu Bergen enthält:

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; }
}

Wenn Sie die MicrosoftSpatialGeoJsonConverter Klasse zu Serialisierungsoptionen hinzufügen, wird der Gipfelstandort ordnungsgemäß deserialisiert:

// 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));
}

Wenn Sie einen Index voller Berge durchsuchen, kann Folgendes ausgegeben werden:

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

Mitwirken

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.

Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys mit unserer CLA tun.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.

Aufrufe