Я пытаюсь десериализовать из json в List<struct>
- однако мой объект всегда имеет значение null. Типы данных в исходном JSON кажутся правильными, и мой код не вызывает никаких ошибок, поэтому я полностью зациклен на том, почему он не работает.Deserializing a list <struct>
Класс Я deserilaising в:
public class SystemStatusRules
{
public struct EmailItem
{
public int EmailSubject_Id;
public bool IsSubject;
public string Email_String;
public int StatusCode;
}
public List<EmailItem> EmailItems {get; set;}
}
Мой JSON:
{"EmailItems":[
{"EmailSubject_Id":16,"IsSubject":true,"Email_String":"Cube Build Successful","StatusCode":0},
{"EmailSubject_Id":17,"IsSubject":true,"Email_String":"Cube Build Failure","StatusCode":0}
]}
и, наконец, мой десериализация код:
[HttpPost]
public bool SetAllStatusRules(string ruleList)
{
SystemStatusRules subjectRules =
JsonConvert.DeserializeObject<SystemStatusRules>(ruleList);
}
Только в случае, если вам это нужно, мой код сериализации:
objArray.push({ EmailSubject_Id: SubjectId, IsSubject: IsSubject,
Email_String: EmailSubject, StatusCode: status });
objArray = { EmailItems: objArray };
var rulesJSON = JSON.stringify(objArray);
$.ajax({
url: "Management/SetAllStatusRules",
type: 'POST',
data: 'ruleList='+rulesJSON,
success: function (result) {
MyResultFunction(result);
}
});
Edit:
Это что-то делать со мной кастинг в объект. Следующий код имеет переменную subjectRules, которая правильно заполнена. Однако ssr равно null.
object subjectRules = JsonConvert.DeserializeObject<SystemStatusRules>(StatusRules);
SystemStatusRules ssr = (SystemStatusRules)subjectRules;
Я не имею ни малейшего представления, что это неправильно, но deserialising в Var позволяет мне использовать объект с данными, как обходной путь.
Переменные 'EmailItems' - это поля. Добавьте '{get; set;}' к каждому из них. –
@EBrown: Это не должно иметь значения здесь ... Они - поля _public_, поэтому они должны быть заполнены правильно ... –
Все еще возвращает null, если я изменю их на свойства. –