JsonConvert.DeserializeObject возвращает нуль в методе ActionResult
У меня есть следующий документ Json, который я пытаюсь десериализовать:
{
"General": {
"Items": [
{
"fId": "divisionID",
"frmt": "Text"
},
{
"fId": "wcctOwnerID",
"frmt": "Text"
},
{
"fId": "qreID",
"frmt": "Text"
}
]
}
}
У меня есть эти классы:
public class Item
{
[JsonProperty(PropertyName = "fId")]
public string fId { get; set; }
[JsonProperty(PropertyName = "frmt")]
public string frmt { get; set; }
}
public class General
{
[JsonProperty(PropertyName = "Items")]
public List<Item> Items { get; set; }
}
Я пытаюсь десериализовать эту строку:
using (StreamReader r = new StreamReader(HostingEnvironment.ApplicationPhysicalPath + @"\Utils\OptionsByDB.json"))
{
var json = r.ReadToEnd();
Utils.General items = JsonConvert.DeserializeObject<Utils.General>(json);
}
Но это возвращает ноль. Что я делаю не так?
1 ответ
Решение
Ваша проблема в том, что ваш JSON не General
объект.
Является ли объект, который имеет General
объект внутри него:
Вам нужно объявление класса, как это:
public class JsonObject{
[JsonProperty(PropertyName = "General")]
public General rootObject {get; set;}
}
А затем используйте:
var jsonConverted = JsonConvert.DeserializeObject<JsonObject>(json);