Есть JSON:
{
"Table1": {
"Field1": "abc",
"Field2": "def"
}
}
И есть код:
JObject data = JObject.Parse(myJson);
foreach (JProperty table in data.Properties())
{
tables.Add(table.Name, new TableFields(table.Value<JObject>())); // <- тут ошибка
}
При выполнении кода выдает исключение InvalidCastException и говорит, что невозможно преобразовать значение в JObject. Почему так?
Пока что я прописал костыль JObject.Parse(table.Value.ToString()). Но далее я пытаюсь у полей со строками получить значения в формате String и опять получаю эту ошибку. Вот код:
public TableFields(JObject source)
{
data = new Dictionary<string, string>();
foreach (JProperty prop in source.Properties()) data.Add(prop.Name, prop.Value<String>());
}
Что это за бред такой? Тем более у этих JProperty в поле Type везде указаны именно те типы, к которым я пытаюсь привести: JObject в первом случае и String во втором.
tablesкласс что из себя представляет? – NewView Jan 16 '19 at 03:26(JObject)table.Value– Grundy Jan 16 '19 at 03:59JsonConvert.Deserialize<MyType>(data). Вместо этого вы пошли читать и разбирать структуру на более низком уровне, что делается крайне редко и только для кастомных json-объектов. Скажите, у вас чем-то мотивирована такая потребность или вас устроит типовое решение по десериализации json.net? – A K Jan 16 '19 at 06:08Dictionary<string, string>()– A K Jan 16 '19 at 06:13