【问题标题】:can't get json.NET to deserialize and show my values in c#无法让 json.NET 反序列化并在 c# 中显示我的值
【发布时间】:2026-01-28 14:25:01
【问题描述】:

请帮助我在用户 json.NET 之后无法获取值

这是我从 jquery ajax 调用返回的字符串:

"[{\"roleInfo\":{\"roleIndex\":0,\"roleID\":\"c1_r0_23\",\"roleName\":\"首席执行官\"}}, {\ "roleInfo\":{\"roleIndex\":1,\"roleID\":\"c1_r1_192\",\"roleName\":\"首席运营官\"}}]"

这是我的 aspx 页面后面的代码中存在的 webmethod:

List md1 = (List)Newtonsoft.Json.JsonConvert.DeserializeObject(sv, typeof(List));

这是我的 MappedRole 课程: 公共类 MappedRole {

    public int roleIndex { get; set; }
    public int roleID { get; set; }
    public string roleName { get; set; }

    public MappedRole(){

    }


}

这些是我在尝试使用 JsonConvert.DeserializeObject 后得到的值......请注意,我得到了 null 和 0 值:我尝试在调试模式下查看这些值。

?md1[0].roleID 0 ?md1[0].roleName 空值 ?md1[0].roleIndex 0

【问题讨论】:

    标签: jquery asp.net-ajax json.net


    【解决方案1】:

    您是否尝试过通过 JSON 验证器运行 JSON?我从您的问题中运行了您的样本,但没有验证。这是验证器的网址:http://jsonlint.com/

    【讨论】:

    • 感谢您的回复!我已经清理了字符串,当我使用下面的字符串时,我得到了一个经过验证的 json 响应。 [ {“roleIndex”:0,“roleID”:“c1_r0_23”,“roleName”:“ChiefExecutive”},{“roleIndex”:1,“roleID”:“c1_r1_192”,“roleName”:“ComputerHardwareEngineer”}]
    • 这里是我如何让对象传递给我的网络方法: $(".jobRole").each(function (index) { var jobRoleIndex = index; var jobRoleID = $(this ).attr('id'); var jobRoleName = $(this).text(); // 将所有 roleids 和 rolenames 添加到工作角色数组中 var roleInfo = { "roleIndex": jobRoleIndex, "roleID": jobRoleID , "角色名称": 工作角色名称 };
    • 这是我的 ajax 调用:$.ajax({ type: "POST", url: "CareerMap.aspx/Save_Mapped_Role", data: "{'savedRole': '" + JSON.stringify( mappedJobRole) + "'}", contentType: "application/json; charset=utf-8", dataType: "json", async: false, success: function (data) { alert("successfully posted data"); },错误:函数(数据){警报(“发布数据失败”);}