Sto analizzando una stringa JSON utilizzando NewtonSoft JObject. Come posso ottenere i valori da un oggetto dinamico a livello di programmazione? Voglio semplificare il codice per non ripetermi per ogni oggetto.Come ottenere proprietà da JObject dinamico al livello di programmazione
public ExampleObject GetExampleObject(string jsonString)
{
ExampleObject returnObject = new ExampleObject();
dynamic dynamicResult = JObject.Parse(jsonString);
if (!ReferenceEquals(dynamicResult.album, null))
{
//code block to extract to another method if possible
returnObject.Id = dynamicResult.album.id;
returnObject.Name = dynamicResult.album.name;
returnObject.Description = dynamicResult.albumsdescription;
//etc..
}
else if(!ReferenceEquals(dynamicResult.photo, null))
{
//duplicated here
returnObject.Id = dynamicResult.photo.id;
returnObject.Name = dynamicResult.photo.name;
returnObject.Description = dynamicResult.photo.description;
//etc..
}
else if..
//etc..
return returnObject;
}
C'è un modo per estrarre i blocchi di codice in "se" dichiarazioni a un metodo per esempio separata:
private void ExampleObject GetExampleObject([string of desired type goes here? album/photo/etc])
{
ExampleObject returnObject = new ExampleObject();
returnObject.Id = dynamicResult.[something goes here?].id;
returnObject.Name = dynamicResult.[something goes here?].name;
//etc..
return returnObject;
}
E 'anche possibile dal momento che non possono utilizzare la riflessione per gli oggetti dinamici . O sto persino usando correttamente il JObject?
Grazie.
È il jsonString una stringa che è sotto il vostro controllo? Oppure stai ricevendo questo da un'altra parte e hai bisogno di comunicare con esso? – MichaelD
@ Michael è di un'altra festa. Sto solo ricevendo e analizzando. – dcdroid
Altre risposte vedi [deserializzare JSON su .net object usando NewtonSoft (o linq to json forse?)] (Http://stackoverflow.com/q/4749639) –