Genießen Sie von Millionen von eBooks, Hörbüchern, Zeitschriften und mehr - mit einer kostenlosen Testversion

Nur $11.99/Monat nach der Testversion. Jederzeit kündbar.

Kochen mit Patrick: Kochen und Programmieren - Hand in Hand
Kochen mit Patrick: Kochen und Programmieren - Hand in Hand
Kochen mit Patrick: Kochen und Programmieren - Hand in Hand
eBook169 Seiten1 Stunde

Kochen mit Patrick: Kochen und Programmieren - Hand in Hand

Bewertung: 0 von 5 Sternen

()

Über dieses E-Book

Programmieren ist wie kochen: Nimm die richtigen, guten Zutaten, bereite alles laut Rezept zu, dann wird zum Schluss etwas Leckeres herauskommen. Für ein Standardessen mag das so stimmen. Doch Spitzenköche und -entwickler bieten weit mehr. Sie experimentieren, probieren aus und kommen auf diese Weise zu noch geschmackvolleren, besseren und funktionaleren Ergebnissen. Patrick A. Lorenz verbindet Kochen und Programmieren in einer Person. Während er beruflich mit seiner Firma PGK Software & Communication Kunden bei der Verwendung neuer Microsoft-Technologien und der Umsetzung von IT-Lösungen hilft, frönt er in der Freizeit gerne der guten und gesunden Küche. In beiden Bereichen probiert er aus und findet dadurch ganz neue Kreationen. In der dotnetpro hat Patrick seit 2006 eine feste Kolumne. "Kochen mit Patrick" heißt sie. Darin schreibt er über Technologien, die sein Unternehmen in der Praxis einsetzt oder die es ihm persönlich angetan haben. Getestet und für gut befunden hat er aber auch die Kochrezepte, die in den Kolumnen enthalten sind. Freuen Sie sich also in diesem devbook über viel Technologie, gewürzt mit einer großen Portion Faszination und tollen Kochrezepten, die das Wasser im Mund zusammenfließen lassen
SpracheDeutsch
Herausgeberepubli
Erscheinungsdatum7. Nov. 2014
ISBN9783844292794
Kochen mit Patrick: Kochen und Programmieren - Hand in Hand
Vorschau lesen

Ähnlich wie Kochen mit Patrick

Ähnliche Bücher

Ähnliche Artikel

Rezensionen für Kochen mit Patrick

Bewertung: 0 von 5 Sternen
0 Bewertungen

0 Bewertungen0 Rezensionen

Wie hat es Ihnen gefallen?

Zum Bewerten, tippen

    Buchvorschau

    Kochen mit Patrick - Patrick A. Lorenz

    Kochen mit Patrick: JSON und .NET

    Das Borne Sequel


    Patrick_8868highres_klein.tif

    AUTOR

    Patrick A. Lorenz ist Geschäftsführer der PGK GmbH, eines auf .NET spezialisierten Technologiedienstleisters, der das .NET-basierte CMS QualiSite anbietet. Daneben ist er als Autor und Coach tätig. In seiner Freizeit ist Patrick Hobbykoch. Sie erreichen ihn unter www.pgk.de, lorenz@pgk.de und www.facebook.com/Kochen.mit.Patrick.


    Im vorangegangenen Heft habe ich an dieser Stelle über JSON, die JavaScript Object Notation, berichtet. Es ging um die Grundlagen, den Aufbau von JSON, die Unterschiede zu XML und die Anwendung in der Praxis. Als Fazit ließ sich unter anderem festhalten, dass JSON in klassischen Web-Szenarien XML längst abgelöst hat. Feststellen ließ sich aber auch, dass der Einsatz nicht aufs Web begrenzt ist. Zudem kann nicht nur JavaScript mit JSON umgehen. Eher am Rande habe ich die implizite Serialisierung durch das ASP.NET Web API demonstriert. Microsoft setzt hier auf die verbreitete Open-Source-Bibliothek JSON.NET. Nach dem positiven Feedback möchte ich in diesem Monat mit Ihnen einen zweiten Blick auf diese und andere Komponenten werfen.

    Meet JSON.NET

    Die Aufgaben von JSON.NET [1] sind einfach umrissen, denn es sind nur zwei an der Zahl:

    die Serialisierung von .NET-Daten in JSON-Strukturen und

    das Deserialisieren in umgekehrter Richtung.

    Diese Möglichkeiten gibt es in der .NET Framework Class Library zwar von Haus aus schon, doch JSON.NET will es schneller, komfortabler, flexibler oder schlicht gesagt besser machen.

    JSON.NET kann ab .NET Version 2.0 genutzt werden, steht für Windows Phone und Windows 8 zur Verfügung und lässt sich über Mono auch auf anderen Plattformen einsetzen, etwa auf mobilen iOS- oder Android-Geräten. In Visual Studio führt der schnellste Weg zu JSON.NET über NuGet. Mit der folgenden Zeile in der Package Manager Konsole wird die Bibliothek heruntergeladen und in Ihr Projekt eingebunden:

    PM> Install-Package Newtonsoft.Json

    Anschließend können Sie einfache .NET-Datenstrukturen mit nur einem Aufruf in JSON umwandeln:

    var person = new Person {

    ID = 1,

    FirstName = Theodor,

    LastName = Heuss

    };

    var json = JsonConvert.SerializeObject(person);

    Debug.WriteLine(json);

    Das Ergebnis sieht so aus:

    >{ID:1,FirstName:Theodor,LastName:Heuss}

    Für bessere Lesbarkeit unterstützt JSON.NET auch eine formatierte Serialisierung, die die Objekthierarchie mittels Einrückung sichtbar macht:

    var json = JsonConvert.SerializeObject( person, Formatting.Indented);

    Leserlich formatiert zeigt sich die Datenstruktur dann wie folgt:

    {

    ID: 1,

    FirstName: Theodor,

    LastName: Heuss

    }

    Umgekehrt geht es auch: JSON.NET kann aus einer JSON-Zeichenkette ein .NET-Objekt deserialisieren:

    var deserializedPerson = JsonConvert.DeserializeObject(json);

    Steht eine passende Klasse nicht zur Verfügung, kann diese als dynamischer Typ als eine Art Prototyp übergeben werden. Das sieht dann so aus:

    var deserializedAnonymousType = JsonConvert.DeserializeAnonymousType( json, new {

    FirstName = string.Empty,

    LastName = string.Empty

    });

    Debug.WriteLine( deserializedAnonymousType.LastName);

    Offiziell unterstützt JSON.NET darüber hinaus dynamische Objekte. In Verbindung mit dem Schlüsselwort kann ohne explizite Übergabe eines Datentyps typisiert auf Eigenschaften zugegriffen werden:

    dynamic deserializedDynamicType = JsonConvert.DeserializeObject(

    json);

    Debug.WriteLine( deserializedDynamicType.LastName);

    Wenngleich formal unterstützt, funktioniert dies leider nicht, sondern wird mit einem Laufzeitfehler quittiert. Zumindest bei mir. Ich habe mich in der Vergangenheit schon einmal mehrere Stunden mit diesem Problem gequält; damals wie heute völlig erfolglos. Vielleicht haben Sie mehr Glück?

    JSON.NET für die schwierigen Fälle

    JSON.NET ist nicht auf einfache Strukturen begrenzt. Es lassen sich Arrays, Dictionaries und komplexe Objektbäume damit umwandeln. Im folgenden Beispiel werden drei Klassen in Collections ineinander verschachtelt. Abgebildet wird ein einfaches Artikelarchiv aus Ausgaben mit Artikeln und Autoren:

    var issues = new List {

    new Issue {

    Title = dotnetpro,

    Year = 2013,

    Number = 12,

    PublicationDate = new DateTime(2013, 11, 21),

    Articles = new List

    {

    new Article {

    Title = Kochen mit Patrick,

    PageNumber = 123,

    Authors = new List {

    new Author {

    FirstName = Patrick A.,

    LastName = Lorenz

    }

    }

    }

    }

    }

    };

    Mit den weiter oben gezeigten Aufrufen produziert JSON.NET aus der Struktur ein ansehnliches Stück JSON:

    [{

    Title: dotnetpro,

    Year: 2013,

    Number: 12,

    PublicationDate: 2013-11-21T00:00:00,

    Articles: [

    {

    Title: Kochen mit Patrick,

    PageNumber: 123,

    Authors: [

    {

    FirstName: Patrick A.,

    LastName: Lorenz

    }

    ]

    }

    ]

    }]

    Offiziell unterstützt JSON keine Datumswerte. Hier spielt JSON.NET seine Stärken aus: Die Bibliothek bietet eine ausgesprochen umfangreiche Unterstützung von JSON mit sehr vielen Details und Spezialfällen. Datumswerte in verschiedenen gängigen Interpretationen gehören da schon zu den Basics.

    JSON versus XML

    Obwohl oder gerade weil man JSON und XML in manchen Anwendungsbereichen als Konkurrenten betrachten darf, bietet JSON.NET eine XML-Unterstützung. Diese erlaubt mit gewissen Einschränkungen die Konvertierung von JSON nach XML:

    var issueJson =

    JsonConvert.SerializeObject(

    issues[0]);

    var xml =

    JsonConvert.DeserializeXmlNode(

    issueJson, issue);

    Debug.WriteLine(xml.OuterXml);

    Die Zeilen basieren auf dem vorherigen Beispiel und produzieren das folgende XML:

    dotnetpro

    2013

    12

    2013-11-21T00:00:00

    Kochen mit Patrick

    123

    Patrick A.

    Lorenz

    Der Prozess lässt sich auch umkehren, allerdings mit Reibungsverlusten.

    Im konkreten Beispiel geht die Abbildung der Unterstrukturen als Array verloren, im Vergleich zum JSON weiter oben fehlen die eckigen Klammern. Folglich lässt sich das rückermittelte JSON nicht mehr mit in das Ursprungsobjekt deserialisieren.

    { Title: dotnetpro,

    Year: 2013,

    Number: 12,

    PublicationDate: 2013-11-21T00:00:0,

    Articles: {

    Title: Kochen mit Patrick,

    PageNumber: 123,

    Authors: {

    FirstName: Patrick A.,

    LastName: Lorenz

    }

    }

    }

    Für Faule wie mich: Code-Generierung

    Zwar erlauben Bibliotheken wie JSON.NET den unstrukturierten Zugriff auf JSON-Daten mittels Dictionaries, wirklich interessant werden sie aber erst in Verbindung mit typisierten Klassen, die sich per Knopfdruck befüllen lassen. Wer mit einer externen Schnittstelle arbeitet, wird die dazu notwendigen Datenstrukturen in der Regel nicht vorliegen haben. Hier hilft der JSON C# Class Generator [2].

    Das in Abbildung 1 gezeigte Programm besteht aus einem großen Eingabefeld und diversen Einstellungsmöglichkeiten. In das Feld wird ein möglichst aussagekräftiges Beispiel der zu verarbeitenden JSON-Struktur kopiert. Mit den Optionen lässt sich festlegen, ob die erzeugten Klassen Felder oder Eigenschaften verwenden sollen, welche Sichtbarkeit sie haben sollen, in welchem Namespace sie abgelegt werden und so weiter.

    Abb01_Kochen XCIV.tif

    [Abb. 1] Der JSON C# Class Generator erzeugt aus einem JSON-Beispiel

    eine passende Klassenstruktur.

    Per Klick erzeugt das Programm eine passende Klassenstruktur entweder in C# oder Visual Basic. Die erkennbaren -Attribute gehören zu JSON.NET, das vom Programm explizit unterstützt wird. Sie dienen dem Mapping zwischen der JSON-Struktur und den Eigenschaften der Klasse. Im vorliegenden Fall ist das unnötig, lässt sich jedoch leider nicht abschalten.

    namespace JSON.NET3 {

    ...

    public class Issue {

    [JsonProperty(Title)]

    public string Title { get; set; }

    [JsonProperty(Year)]

    public int Year { get; set; }

    [JsonProperty(Number)]

    public int Number { get; set; }

    [JsonProperty(PublicationDate)]

    public string PublicationDate { get; set; }

    [JsonProperty(Articles)]

    public Article[] Articles { get; set; }

    }

    }

    Als dritte Sprache neben C# und Visual Basic wird von JSON.NET übrigens TypeScript unterstützt:

    module JSON.NET3 {

    export interface Author {

    FirstName: string;

    LastName: string;

    }

    export interface Article {

    Title: string;

    PageNumber: number;

    Authors: Author[];

    }

    export interface Issue {

    Title: string;

    Year: number;

    Number: number;

    PublicationDate: string;

    Articles: Article[];

    }

    }

    Als TypeScript-Fan finde ich das besonders spannend. Interessant ist das vor allem, um clientseitig aus TypeScript/ JavaScript typisiert auf ein

    Gefällt Ihnen die Vorschau?
    Seite 1 von 1