2015-02-06 14 views
5

Ich habe folgende JSON-StringDeserialize Array-Objekt mit Newtonsoft Json.Net

[ 
    { 
     "itemtype": "note", 
     "body": "some text" 
    }, 
    { 
     "itemtype": "list", 
     "items": [ 
      { 
       "item": "some text" 
      }, 
      { 
       "item": "some text" 
      } 
     ] 
    }, 
    { 
     "itemtype": "link", 
     "url": "some link" 
    } 
] 

Was ich brauche in C# zu analysieren. Meine Zeichenfolge könnte Fehlercodes wie folgt aus (oder andere unbekannte Fehlercodes) return

{"Error":"You need to login before accessing data"} 

Oder es könnte nur ein leeres Array (keine Daten)

[] 

Hier ist mein Code

public void ParseData(string inStr) { 
    if (inStr.Trim() != "") { 
     dynamic result = JsonConvert.DeserializeObject(inStr); 
     if (result is Array) { 
      foreach (JObject obj in result.objectList) { 
       switch (obj.Property("itemtype").ToString()) { 
        case "list": // do something 
         break; 
        case "note": // do something 
         break; 
        case "link": // do something 
         break; 
       } 
      } 
     } else { 
      // ... read error messages 
     } 
    } 
} 

Problem

In obigem Code result ist nie vom Typ Array. in der Tat habe ich keine Möglichkeit, zu überprüfen, was sein Typ ist (ich versuchte typeof).

Frage

Wie kann ich überprüfen, ob ich ein Array in String haben und wie kann ich überprüfen, ob es Objekte in ihm hat (Bitte beachten Sie, dies ist nicht eine typisierte Array)

+2

Versuchen für 'JArray' Überprüfung ... – petelids

+0

Post ist als Antwort und ich wähle up, danke – AaA

Antwort

11

Die JsonConvert.DeserializeObject Ihre Json zu einem JArray eher als ein Array konvertieren - dem Check aktualisieren:

if (result is JArray) 
+1

Ich habe mir etwa 3 Stunden lang den Kopf verkratzt, und konnte nicht sehen, dass ich das 'J' verpasst habe. Ich schätze, es ist meine Schlafenszeit vorbei. Danke nochmal – AaA

+0

LOL. Keine Sorge @BobSort, wir waren alle da :) – petelids

Verwandte Themen