Как правильно создать строку, которую после десериализации можно использовать для извлечения свойств динамического объек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

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