Как правильно создать строку, которую после десериализации можно использовать для извлечения свойств динамического объекC#

Место общения программистов C#
Ответить
Anonymous
 Как правильно создать строку, которую после десериализации можно использовать для извлечения свойств динамического объек

Сообщение Anonymous »

У меня есть метод, который дестерилизирует строку в динамический объект, а затем получает доступ к ее свойствам через индекс. Это код, написанный Клиентом, который нельзя изменить.

Код: Выделить всё

public void CustomerMethod(string Content)
{
dynamic jsonData = JsonSerializer.Deserialize(Content);
string myvalue1 = jsonData["myvalue1"];
string myvalue2 = jsonData["myvalue2"];
}
Я пытаюсь вызвать этот метод из моего кода MyMethod. Мне разрешено изменять мой метод. Я пытаюсь заполнить строку, которую можно десериализовать методом клиента. Я пробовал это.

Код: Выделить всё

public void MyMethod()
{
string Json = @"{
""myvalue1"": ""Somevalue1"",
""myvalue2"": ""Somevalue2""
}";
CustomerMethod(Json);
}
В методе Customer десериализация работает, но jsonData["myvalue1"] завершается с ошибкой

Код: Выделить всё

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'The best overloaded method match
for 'System.Text.Json.JsonElement.this[int]' has some invalid arguments'
В чем может быть проблема? Как изменить мой код, чтобы CustomerMethod работал?

Подробнее здесь: https://stackoverflow.com/questions/791 ... sed-to-fet
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»