Как исправить RuntimeBinderException при использовании dynamicJsonObject.getDynamicMemberNames () - PullRequest
0 голосов
/ 03 июля 2019

Я нашел решение этого вопроса во время написания, но я все еще публикую его, чтобы, если у кого-то возникла эта проблема в будущем, он мог найти это

Этот вопрос относится к этому вопросу , так как это моя последняя попытка решить мою проблему.

Короче говоря:

в моем .Net MVC Project я получаю Json с некоторыми непредсказуемыми данными (массивом :). Я могу декодировать этот Json, используя

dynamic dynamicObj =System.Web.Helpers.Json.Decode(await someAPIcall(someParameters));

И я могу исследовать данные, наведя на них курсор в VisualStudio (хотя это гораздо более сложная структура, чем отправляемый json), а также в nuget ObjectDumper можно отобразить все свойства.

Теперь, как я могу получить доступ к этим данным в моем коде?

Я пробовал следующее:

Доступ к свойствам как к любому объекту путем объединения имен свойств, таких как:

dynamicObj._values[1].Key

который, следуя пути в проводнике мыши (не знаю его имени), должен дать мне простую строку. Но я получаю эту ошибку:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform 
runtime binding on a null reference

Итак, я попытался выяснить, может ли имя как-то отличаться в этом объекте, поэтому я попытался:

foreach (string name in dynamicObj.getDynamicMemberNames())
{
    Debug.WriteLine(name);
}

Это метод DynamicJsonObject , но возникает эта ошибка:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform 
runtime binding on a null reference

когда значение dynamicObj не равно нулю.

Чего мне не хватает?

1 Ответ

0 голосов
/ 03 июля 2019

Проблема была в том, что эта строка:

dynamic dynamicObj = System.Web.Helpers.Json.Decode(await 
someAPIcall(someParameters)));

что должно быть так:

DynamicJsonObject dynamicObj = System.Web.Helpers.Json.Decode(await 
someAPIcall(someParameters));
...