为了账号安全,请及时绑定邮箱和手机立即绑定

json反序列化返回null

json反序列化返回null

C#
元芳怎么了 2022-07-10 10:28:21
我将带有 ajax formdata 的 JSON 对象传递给 Controller。我尝试将其反序列化为对象,但它始终返回 null。我只能将其转换为动态,但不能将动态转换为 Category 类。public class CategoryVM{    public Category category { get; set; }    public CategoryImage categoryImage { get; set; }    public CategoryVM()    {        category = new Category();         categoryImage = new CategoryImage();     }}类别类public class Category{    public string Kategori { get; set; }    public string Kodu { get; set; }    public bool State { get; set; }}JSON 值:{    "cat": {        "Category": {            "Kategori": "xxx",            "Kodu": "yyy",            "State": "true"        }    }}控制器:[HttpPost]public ActionResult AddCat(string cat){     dynamic json = Newtonsoft.Json.JsonConvert.DeserializeObject(cat);     CategoryVM c = JsonConvert.DeserializeObject<CategoryVM >(JsonConvert.SerializeObject(json)); //converts null here     return View();}我也尝试了 JsonConvert,但对我不起作用:CategoryVM c = JsonConvert.DeserializeObject<CategoryVM>(JsonConvert.SerializeObject(json));
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

您有一个额外的嵌套级别,{"cat": { /* CategoryVM contents */ }}它没有反映在您的数据模型中。解决此问题的最简单方法是反序列化为具有public CategoryVM cat属性的包装对象,该属性可以是匿名类型对象

var c = JsonConvert.DeserializeAnonymousType(cat, new { cat = default(CategoryVM) })
    .cat.category;

演示小提琴在这里


查看完整回答
反对 回复 2022-07-10
?
呼如林

TA贡献1798条经验 获得超3个赞

你可以这样做,那么你就不需要CategoryVM

var obj = JsonConvert.DeserializeObject<JObject>(json);var category = JsonConvert.DeserializeObject<Category>(obj.First.First["Category"].ToString());


查看完整回答
反对 回复 2022-07-10
  • 2 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号