Вы указываете, что можете получать любой JSON. Однако это приведет к серьезным проблемам, потому что вам все равно придется анализировать ваши данные, чтобы использовать их каким-то структурированным образом. Поэтому вы должны убедиться, что вы всегда получаете одинаковый ввод. Я дам вам варианты, которые лучше всего подходят.
Вариант 1. Десериализация JSON
в Dictionary
работает только в том случае, если ваши данные соответствуют макету key/value
. Таким образом, макет всегда должен быть таким:
{
"key1": "value1",
"key2": "value2"
}
Конечно, ваше значение также может быть списком. Тем не менее, основная компоновка остается прежней. Например:
{
"key1": ["value1", "value2"],
"key2": ["value3", "value4"]
}
Это вы можете просто десериализовать с помощью своего кода:
var dict = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(requestPost);
Вариант 2. если ваши JSON
данные структурированы с использованием пользовательских имен данных, вам потребуется создать соответствующие модели. Хороший инструмент, который может направить вас на правильный путь, — json2csharp. Позвольте мне привести пример. Если это ваш JSON
:
[{
"Key": "MyKey",
"Values": [{
"First": "RandomValue",
"Second": "RandomValue"
}, {
"First": "RandomValue",
"Second": "RandomValue"
}]
},
{
"Key": "MyKey",
"Values": [{
"First": "RandomValue",
"Second": "RandomValue"
}, {
"First": "RandomValue",
"Second": "RandomValue"
}]
}]
Тогда ваши соответствующие модели должны быть:
public class Value
{
public string First { get; set; }
public string Second { get; set; }
}
public class RootObject
{
public string Key { get; set; }
public List<Value> Values { get; set; }
}
И вы можете десериализовать его следующим образом:
var values = JsonConvert.DeserializeObject<List<RootObject>>(json);
В заключение вы можете либо убедиться, что ваши JSON
данные структурированы как Dictionary
с key/value
парами. В этом случае вы можете напрямую десериализоваться в Dictionary
. В противном случае вам придется создавать собственные модели, соответствующие вашим JSON
данным. Используйте то, что лучше всего подходит для вас! Обратите внимание, что можно просто десериализовать случайные данные, но будет очень сложно убедиться, что ваш код может обрабатывать данные! См. ответ Люка о том, как это сделать.
person
Jurjen
schedule
21.04.2017
requestPost
? - person Luke   schedule 21.04.2017