2016-07-26 5 views
0

Ich versuche, einen JSON-Array zu analysieren, die etwa wie folgt aussieht:Json.NET: Parsen Objekt Array unbekannter Länge

{ 
    "chatName": "Test", 
    "users": [ 
    "User1", 
    "User2" 
    ], 
    "someBooleanValue": true, 
    "someObjects": { 
    "object1": "someObjectValue1", 
    "object2": "someObjectValue2", 
    ... 
    } 
} 

Gibt es eine Möglichkeit, die someObjects Array von Objekten zu analysieren, wenn ich don‘ Ich weiß, wie viele Objekte das Array haben wird, bevor ich mit der Verarbeitung der JSON-Datei beginne.

Das gesamte Parsen erfolgt mit Json.NET.

+2

someObjects sieht aus wie ein Objekt mit Eigenschaften, kein Array. – shahkalpesh

Antwort

1

Sie können dynamic für einigeObjects verwenden. Code kann wie folgt aussehen:

using System; 
using System.Collections.Generic; 
using Newtonsoft.Json; 

public class RootObject 
{ 
    public string chatName { get; set; } 
    public List<string> users { get; set; } 
    public bool someBooleanValue { get; set; } 
    public dynamic someObjects { get; set; } 
} 

public class Program 
{ 
    static public void Main() 
    { 
     string j = "{\"chatName\": \"Test\",\"users\": [\"User1\",\"User2\"],\"someBooleanValue\": true,\"someObjects\": {\"object1\": \"someObjectValue1\",\"object2\": \"someObjectValue2\"}}"; 

     RootObject ro = JsonConvert.DeserializeObject<RootObject>(j); 

     Console.WriteLine(ro.someObjects.object1); 
    }  
} 
+0

Gibt es eine Möglichkeit, die Eigenschaften von someObject zu durchlaufen und ihren Wert zu erhalten (z. B. someObjectValue1), da ich den Namen jeder einzelnen Eigenschaft nicht kenne (die Namen von object1 und object2 ändern sich häufig). – DZetko

+0

Schau dir das an: http://stackoverflow.com/questions/2594527/how-do-i-iterate-over-the-properties-of-ananonymous-object-in-c – BWA

0

someObjects Bedürfnisse deserailized entweder zu einer Object (Klasse) oder einen JObject (C# json) oder zu irgendeiner Art von Dictionary werden.

Sie können den JSON mithilfe der Methode von json.net deserialisieren: JsonConvert.DeserializeObject<T>.

-1

Sie JavaScriptSerializer() verwenden können serialisiert Konvertiert ein Objekt in einem JSON-String..

Zeichenfolge json = new System.Web.Script.Serialization.JavaScriptSerializer(). Serialize (Objektname);

ähnlich deserialisieren Sie Deserialize Funktion

String json verwenden = "{\" Chat Namen \ ": \" Test \ "\ "Benutzer \": [\ "User1 \", \" User2 \ "], \" someBooleanValue \ ": true," someObjects ": {\" object1 \ ": \" someObjectValue1 \ "," object2 \ ":" someObjectValue2 \ "}}";

Klassenname Objektname = Neu System.Web.Script.Serialization.JavaScriptSerializer(). Deserialize (json);

+0

JavaScriptSerializer ist sehr schlechte Wahl. – BWA