568 Stimmen

Wie kann ich JSON mit C# deserialisieren?

Ich habe den folgenden Code:

var user = (Dictionary<string, object>)serializer.DeserializeObject(responsecontent);

Die Eingabe in responsecontent ist JSON, aber es wird nicht richtig in ein Objekt deserialisiert. Wie sollte ich es richtig deserialisieren?

11voto

Vikas Lalwani Punkte 753

Wenn JSON wie unten dynamisch ist

{
 "Items": [{
        "Name": "Apple",
        "Price": 12.3
    },
    {
        "Name": "Grape",
        "Price": 3.21
    }
   ],
   "Date": "21/11/2010"
}

Sobald Sie Folgendes installiert haben NewtonSoft.Json von NuGet und fügen Sie es in Ihr Projekt ein, können Sie es serialisieren als

string jsonString = "{\"Items\": [{\"Name\": \"Apple\",\"Price\": 12.3},{\"Name\": \"Grape\",\"Price\": 3.21}],\"Date\": \"21/11/2010\"}";

        dynamic DynamicData = JsonConvert.DeserializeObject(jsonString);

        Console.WriteLine(   DynamicData.Date); // "21/11/2010"
        Console.WriteLine(DynamicData.Items.Count); // 2
        Console.WriteLine(DynamicData.Items[0].Name); // "Apple"

Quelle: Wie liest man JSON-Daten in C# (Beispiel mit Console app & ASP.NET MVC)?

5voto

TargetofGravity Punkte 343

Das Folgende aus dem msdn Website sollte meiner Meinung nach helfen, einige native Funktionen für das, was Sie suchen, bereitzustellen. Bitte beachten Sie, dass sie für Windows 8 spezifiziert ist. Ein solches Beispiel von der Website ist unten aufgeführt.

JsonValue jsonValue = JsonValue.Parse("{\"Width\": 800, \"Height\": 600, \"Title\": \"View from 15th Floor\", \"IDs\": [116, 943, 234, 38793]}");
double width = jsonValue.GetObject().GetNamedNumber("Width");
double height = jsonValue.GetObject().GetNamedNumber("Height");
string title = jsonValue.GetObject().GetNamedString("Title");
JsonArray ids = jsonValue.GetObject().GetNamedArray("IDs");

Sie nutzt die Windows.Data.JSON Namensraum.

0voto

Starnuto di topo Punkte 2632

Ich endete mit einer einfachen Klasse, die Typen on the fly erstellt, instanziieren sie und hydratisieren sie, spiegeln die Struktur der Eingabe JSON.

enter image description here

Sie können es hier finden:

https://github.com/starnutoditopo/JsonToObject

0voto

Sie können folgende Erweiterungen verwenden

public static class JsonExtensions
{
    public static T ToObject<T>(this string jsonText)
    {
        return JsonConvert.DeserializeObject<T>(jsonText);
    }

    public static string ToJson<T>(this T obj)
    {
        return JsonConvert.SerializeObject(obj);
    } 
}

-1voto

         string json = @"{
            'Name': 'Wide Web',
            'Url': 'www.wideweb.com.br'}";

        JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
        dynamic j = jsonSerializer.Deserialize<dynamic>(json);
        string name = j["Name"].ToString();
        string url = j["Url"].ToString();

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