1124 Stimmen

JSON in C# dynamisches Objekt deserialisieren?

Gibt es eine Möglichkeit, JSON-Inhalte in einen dynamischen C#-Typ zu deserialisieren? Es wäre schön, wenn man die Erstellung einer Reihe von Klassen überspringen könnte, um die DataContractJsonSerializer .

4voto

Ryan Norbauer Punkte 1698

Um ein ExpandoObject zu erhalten:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

Container container = JsonConvert.Deserialize<Container>(jsonAsString, new ExpandoObjectConverter());

4voto

Behnam Mohammadi Punkte 5748

Verwenden Sie DataSet (C#) mit JavaScript. Eine einfache Funktion zur Erstellung eines JSON-Streams mit DataSet-Input. Erstellen Sie JSON-Inhalt wie (Multi-Tabelle Dataset):

[[{a:1,b:2,c:3},{a:3,b:5,c:6}],[{a:23,b:45,c:35},{a:58,b:59,c:45}]]

Nur Client-Seite, verwenden Sie eval. Zum Beispiel,

var d = eval('[[{a:1,b:2,c:3},{a:3,b:5,c:6}],[{a:23,b:45,c:35},{a:58,b:59,c:45}]]')

Dann verwenden Sie:

d[0][0].a // out 1 from table 0 row 0

d[1][1].b // out 59 from table 1 row 1

// Created by Behnam Mohammadi And Saeed Ahmadian
public string jsonMini(DataSet ds)
{
    int t = 0, r = 0, c = 0;
    string stream = "[";

    for (t = 0; t < ds.Tables.Count; t++)
    {
        stream += "[";
        for (r = 0; r < ds.Tables[t].Rows.Count; r++)
        {
            stream += "{";
            for (c = 0; c < ds.Tables[t].Columns.Count; c++)
            {
                stream += ds.Tables[t].Columns[c].ToString() + ":'" +
                          ds.Tables[t].Rows[r][c].ToString() + "',";
            }
            if (c>0)
                stream = stream.Substring(0, stream.Length - 1);
            stream += "},";
        }
        if (r>0)
            stream = stream.Substring(0, stream.Length - 1);
        stream += "],";
    }
    if (t>0)
        stream = stream.Substring(0, stream.Length - 1);
    stream += "];";
    return stream;
}

4voto

Mist Punkte 658

Parsen einfacher JSON-Inhalte mit Dynamic & JavaScriptSerializer

Bitte fügen Sie einen Hinweis auf System.Web.Erweiterungen und fügen Sie diesen Namespace hinzu using System.Web.Script.Serialization; oben:

public static void EasyJson()
{
    var jsonText = @"{
        ""some_number"": 108.541,
        ""date_time"": ""2011-04-13T15:34:09Z"",
        ""serial_number"": ""SN1234""
    }";

    var jss = new JavaScriptSerializer();
    var dict = jss.Deserialize<dynamic>(jsonText);

    Console.WriteLine(dict["some_number"]);
    Console.ReadLine();
}

Wie man verschachtelte und komplexe json mit dynamischen & JavaScriptSerializer parsen

Bitte fügen Sie einen Hinweis auf System.Web.Erweiterungen und fügen Sie diesen Namespace hinzu using System.Web.Script.Serialization; oben:

public static void ComplexJson()
{
    var jsonText = @"{
        ""some_number"": 108.541,
        ""date_time"": ""2011-04-13T15:34:09Z"",
        ""serial_number"": ""SN1234"",
        ""more_data"": {
            ""field1"": 1.0,
            ""field2"": ""hello""
        }
    }";

    var jss = new JavaScriptSerializer();
    var dict = jss.Deserialize<dynamic>(jsonText);

    Console.WriteLine(dict["some_number"]);
    Console.WriteLine(dict["more_data"]["field2"]);
    Console.ReadLine();
}

4voto

prabir Punkte 7464

Es gibt eine leichtgewichtige JSON-Bibliothek für C# namens SimpleJson .

Es unterstützt .NET 3.5+, Silverlight und Windows Phone 7.

Es unterstützt Dynamik für .NET 4.0

Es kann auch als NuGet-Paket installiert werden

Install-Package SimpleJson

4voto

Nick Daniels Punkte 902

Das gewünschte Objekt DynamicJSONObject ist in der System.Web.Helpers.dll aus dem ASP.NET Web Pages-Paket enthalten, das Teil von WebMatrix ist.

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