Ваши предметы не data["a1"]
, data["a2"]
и т. Д. У вас есть словарь ОДНОГО предмета, ключ которого - «данные», поэтому это data["data"]
.Ваше значение для этого одного предмета - это объект со свойствами a1, a2 и a3.Не знаю, с чем это работает в вашем приложении WCF, но в Web API это JToken
из библиотеки Newtonsoft Json.Net.
Если вам нужен Dictionary
с ключами a1, a2, a3, вынеобходимо настроить тело JSON, чтобы исключить уровень «данных»:
{
"a1": "b1",
"a2": "b2",
"a3": "b3"
}
ОБНОВЛЕНИЕ
Если по какой-либо причине вам не удастся изменить структуру JSON, выможет создать класс со свойством data
типа Dictionary<string,object>
:
public class TheData
{
public Dictionary<string, object> data {get;set;}
}
Тогда ваш метод API будет принимать тип TheData
вместо Dictionary<string,object>
:
public void testdictionary(TheData _data)
{
...
и ваш код будет иметь доступ к словарю как:
string d1 = _data.data["a1"].ToString(); // d1 == "b1"