2014-04-15 14 views
7

ho la seguente stringa (formato JSON)
ho ottenuto dal mio server:Get Valore da JSON utilizzando 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"}]} 

voglio ottenere ogni valore e di salvarli in variabili stringa in modo da risparmiare li in una base di dati.

Per questo sto cercando di fare come segue:

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 
    } 
} 

Ma non riesco a trovare il modo per convertire i valori di stringa.

risposta

7

Usa ToString(), non ToString.

ToString() è una chiamata al metodo; ToString è un riferimento al metodo ToString e può essere assegnato solo a un delegato compatibile.

È inoltre possibile lanciare a String, dal momento che la classe JToken definisce una conversione:

string tempValue = (string)prop.Value; 

Un'altra opzione da considerare è quello di utilizzare JSON serializzazione: creare una classe che rappresenta i dati JSON (con la stessa struttura) e deserializzare il JSON in questa classe. Rende il codice molto più leggibile e mantenibile.

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 
    } 
} 

come per il JSON si dovrebbe iniziare da un jobject dal momento che è circondata da {}, o rimuoverli da tutto il JSON avete inviato nella tua domanda

1

JProperty.Value è di tipo JToken che ha un metodo ToString (e non una proprietà).

Vedere la documentazione here.

La sintassi dovrebbe essere così:

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

È possibile direttamente de serializzare il tuo JSON utilizzando C# classe (utilizzando: - http://json2csharp.com/) e non hanno bisogno di scorrere JSON.

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

È possibile de serializzare

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

Si può fare questo perché la vostra JSON è in formato strutturato

Problemi correlati