2014-04-15 8 views
7

Ich habe die folgende Zeichenfolge (json-Format)
Ich habe von meinem Server bekommen:Get Value von JSON mit JArray

{[{"ruta": "1","division": "7"},{"ruta": "2","division": "7"},{"ruta": "3","division":"7"},{"ruta": "4","division": "7"},{"ruta": "5","division": "7"},{"ruta": "23","division": "7"}]} 

Ich möchte jeden Wert erhalten und sie in String-Variablen speichern, um sie zu retten sie in einer Datenbank.

Dafür habe ich zu tun versuche, wie folgt:

JArray jarr = JArray.Parse(result); 
foreach (JObject content in jarr.Children<JObject>()) 
{ 
    foreach (JProperty prop in content.Properties()) 
    { 
     string tempValue = prop.Value.ToString; // This is not allowed 
     //here more code in order to save in a database 
    } 
} 

Aber ich kann den Weg nicht finden, die Werte zu Zeichenfolge zu konvertieren.

Antwort

7

Verwenden ToString(), nicht ToString.

ToString() ist ein Methodenaufruf; ToString ist eine Referenz auf die ToString-Methode und kann nur einem kompatiblen Delegaten zugewiesen werden.

können Sie auch String werfen, da die JToken Klasse eine Umwandlung definiert:

string tempValue = (string)prop.Value; 

Eine weitere Option zu prüfen, ist JSON Serialisierung zu verwenden: eine Klasse erstellen, die die JSON-Daten (mit der gleichen Struktur) repräsentiert und das JSON für diese Klasse deserialisieren. Es macht den Code viel lesbarer und wartbarer.

4
JArray jarr = JArray.Parse(result); 
foreach (JObject content in jarr.Children<JObject>()) 
{ 
    foreach (JProperty prop in content.Properties()) 
    { 
     string tempValue = prop.Value.ToString(); // This is not allowed 
     //here more code in order to save in a database 
    } 
} 

wie für die JSON Sie von einem JObject beginnen sollte, da es umgeben ist von {} oder entfernen aus der ganzen JSON Sie in Ihrer Frage gestellt

1

JProperty.Value ist vom Typ JToken, der eine Methode ToString (und keine Eigenschaft) hat.

Siehe Dokumentation here.

Die Syntax sollte so sein:

string tempValue = prop.Value.ToString(); 
5

Sie können direkt de serialisiert Ihre json C# Klasse verwendet wird (Verwendung: - http://json2csharp.com/) und nicht durch Json laufen müssen.

public class YourClass 
{ 
    public string ruta { get; set; } 
    public string division { get; set; } 
} 

können Sie de serialisiert

List<YourClass> yourClasslist= JsonConvert.DeserializeObject<List<YourClass>>(result.ToString()); 

Sie können dies tun, weil Ihre Json in strukturierter Form ist