296 Stimmen

Wie man einen JSON-String in C# erstellt

Ich habe gerade den XmlWriter verwendet, um XML zu erstellen, das in einer HTTP-Antwort zurückgesendet wird. Wie würden Sie einen JSON-String erstellen? Ich nehme an, Sie würden einfach einen StringBuilder verwenden, um den JSON-String aufzubauen und dann Ihre Antwort als JSON formatieren?

420voto

Orr Punkte 4580

Mit Newtonsoft.Json zu verwenden macht es wirklich einfacher:

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };

string json = JsonConvert.SerializeObject(product);

Dokumentation: JSON serialisieren und deserialisieren

257voto

Christian C. Salvadó Punkte 763569

Sie könnten die JavaScriptSerializer-Klasse verwenden, überprüfen Sie diesen Artikel, um eine nützliche Erweiterungsmethode zu erstellen.

Code aus dem Artikel:

namespace ExtensionMethods
{
    public static class JSONHelper
    {
        public static string ToJSON(this object obj)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize(obj);
        }

        public static string ToJSON(this object obj, int recursionDepth)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            serializer.RecursionLimit = recursionDepth;
            return serializer.Serialize(obj);
        }
    }
}

Verwendung:

using ExtensionMethods;

...

List people = new List{
                   new Person{ID = 1, FirstName = "Scott", LastName = "Gurthie"},
                   new Person{ID = 2, FirstName = "Bill", LastName = "Gates"}
                   };

string jsonString = people.ToJSON();

88voto

Dr. K Punkte 801

Einfache Verwendung der Newtonsoft.Json und Newtonsoft.Json.Linq Bibliotheken.

        //Erstelle mein Objekt
        var myData = new
        {
            Host = @"sftp.myhost.gr",
            UserName = "my_username",
            Password = "my_password",
            SourceDir = "/export/zip/mypath/",
            FileName = "my_file.zip"
        };

        //Wandle es in ein Json-Objekt um
        string jsonData = JsonConvert.SerializeObject(myData);

        //Gib das Json-Objekt aus
        Console.WriteLine(jsonData);

        //Parse das Json-Objekt
        JObject jsonObject = JObject.Parse(jsonData);

        //Gib das geparste Json-Objekt aus
        Console.WriteLine((string)jsonObject["Host"]);
        Console.WriteLine((string)jsonObject["UserName"]);
        Console.WriteLine((string)jsonObject["Password"]);
        Console.WriteLine((string)jsonObject["SourceDir"]);
        Console.WriteLine((string)jsonObject["FileName"]);

18voto

hugoware Punkte 34313

Diese Bibliothek ist sehr gut für JSON aus C#

http://james.newtonking.com/pages/json-net.aspx

13voto

Joe Chung Punkte 11545

Dieser Code-Schnipsel verwendet den DataContractJsonSerializer aus System.Runtime.Serialization.Json in .NET 3.5.

public static string ToJson(/* this */ T value, Encoding encoding)
{
    var serializer = new DataContractJsonSerializer(typeof(T));

    using (var stream = new MemoryStream())
    {
        using (var writer = JsonReaderWriterFactory.CreateJsonWriter(stream, encoding))
        {
            serializer.WriteObject(writer, value);
        }

        return encoding.GetString(stream.ToArray());
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X