Share via


Newtonsoft.Json-Unterstützung für die Microsoft.Spatial-Bibliothek für .NET (Vorschau)

Das Microsoft.Spatial-Paket enthält Klassen und Methoden, die geografische und geometrische Vorgänge unterstützen. Diese Bibliothek enthält Konverter, die vom Newtonsoft.Json-Paket 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 Newtonsoft.Json serialisieren möchten.

Installieren des Pakets

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

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

Wichtige Begriffe

Dieses Supportpaket enthält die NewtonsoftJsonMicrosoftSpatialGeoJsonConverter Klasse, die jsonSerializerSettings hinzugefügt werden kann, um geografische Objekte wie GeographyPointzu deserialisieren. 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 mit geografischen Punkten deserialisiert werden können. Weitere Informationen und Beispiele für die Verwendung von Azure.Search.Documents finden Sie in der INFODATEI.

Deserialisieren von Dokumenten

Betrachten Sie eine Modellklasse, 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 NewtonsoftJsonMicrosoftSpatialGeoJsonConverter 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.
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));
}

Bei der Suche nach einem Index voller Berge kann Folgendes gedruckt 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