NewtonSoft JObject kullanarak JSON dizesini ayrıştırma yapıyorum. Dinamik bir nesneden nasıl programlı olarak değerler alabilirim? Her nesne için kendimi tekrar etmemesi için kodu basitleştirmek istiyorum.Dinamik JObject özellikli özellik nasıl edinilir
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;
}
ben kod bloklarını ayıklamak herhangi bir yolu var mı ayrı bir yöntem örneğin ifadelerini "eğer":
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;
}
Hatta mümkün biz dinamik nesneler için yansıma kullanamazsınız beri . Yoksa JObject'i doğru kullanıyorum mı?
Teşekkürler.
jsonString sizin kontrolünüz altında olan bir dize var mı? Yoksa bunu başka bir partiden mi alıyorsunuz ve onunla iletişim kurmanız mı gerekiyor? – MichaelD
@MichaelD başka bir partiden. Sadece alıp ayrışıyorum. – dcdroid
Daha fazla yanıt [bkz. JSS için JSON'u .soft nesnesini kullanarak (veya belki de linson'a belki?)] (Http://stackoverflow.com/q/4749639) –