Я разбираю строку JSON, используя JObject NewtonSoft. Как я могу получить значения от динамического объекта программно? Я хочу упростить код, чтобы не повторять себя для каждого объекта.Как получить свойство из динамического JObject программно
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;
}
Есть ли способ, что я могу извлечь блоки кода в «если» заявление в отдельном методе, например:
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;
}
ли это даже возможно, так как мы не можем использовать отражение для динамических объектов , Или я правильно использую JObject?
Спасибо.
ли jsonString строка, которая находится под вашим контролем? Или вы получаете это от другой стороны, и вам нужно общаться с ней? – MichaelD
@MichaelD это с другой стороны. Я просто получаю и разбираюсь. – dcdroid
Другие ответы см. В разделе [десериализация JSON для .net-объекта с использованием NewtonSoft (или linq для json, возможно?)] (Http://stackoverflow.com/q/4749639) –