2016-12-09 4 views
1

I wieGet Wert aus einem JSON-String

einen Json Stachel habe
var Result= [{"CompanyID":32,"Roles":["Admin"]}] 

Ich brauche den Wert von CompanyID von diesem zu erhalten.

habe ich versucht, so etwas wie

var obj = JObject.Parse(Result); 
int Id=obj["CompanyID"]; 

aber es einige Fehler zu werfen "Fehler JObject von JsonReader Lesen Aktuelle JsonReader Artikel ist kein Objekt:.. StartArray Pfad '', Zeile 1, Position 1"

kann jemand helfen

danke im voraus für hilfe.

+0

Mögliche Duplikat [Deserialisieren JSON-Daten zu C# JSON.NET] (http://stackoverflow.com/questions/2546138/deserializing-json-data-to-c-sharp-using-json-net) –

Antwort

4

Das eigentliche Problem ist, dass Sie versuchen, dies zu JObject zu analysieren, wenn Sie tatsächlich ein Array von Objekten haben. Sie können zunächst auf ein Array analysieren, dann Index der Array das einzige Objekt auszuwählen, und wählen Sie Ihren CompanyID Schlüssel dann den Wert als Alternativ int

var Result = "[{\"CompanyID\":32,\"Roles\":[\"Admin\"]}]"; 
// Parse your Result to an Array 
var jArray = JArray.Parse(Result); 
// Index the Array and select your CompanyID 
var obj = jArray[0]["CompanyID"].Value<int>(); 

greifen, können Sie auch die JSON konkreter Karte Wenn es eine Struktur ist, mit der Sie oft arbeiten werden. Dies ist vorteilhafter, da Sie die Kompilierzeit überprüfen müssen - im Falle eines Tippfehlers oder Großbuchstabens bei der Auswahl eines Schlüssels.

class Program 
{ 
    static void Main(string[] args) 
    { 
     var Result = "[{\"CompanyID\":32,\"Roles\":[\"Admin\"]}]"; 
     var cList = JsonConvert.DeserializeObject<List<Company>>(Result); 

     var obj = cList.First().CompanyID; 
    } 
} 

public class Company 
{ 
    public int CompanyID { get; set; } 
    public List<string> Roles { get; set; } 
}