相关疑难解决方法(0)

为什么Web API不会反序列化,但JSON.Net会?

Web API如何无法反序列化JSON.Net反序列化的对象?

Visual Studio将Web API的尝试显示为所有空值,但JSON.Net已正确填充

这是Web API控制器:

public void Put(EditorSubmissionMainView ajaxSubmission) {
// ajaxSubmission: EditorSubmissionMainView with all values ('data' also == null)

    string json = "{\"id\":\"row_1377\",\"data\":{\"ROTATION\":\"1\",\"EQUIPMENT\":[{\"id\":\"6\"},{\"id\":\"8\"}],\"NOTES\":\"\"}}";

    EditorSubmissionMainView foo = Newtonsoft.Json.JsonConvert.DeserializeObject<EditorSubmissionMainView>(json) as EditorSubmissionMainView;
// foo is a EditorSubmissionMainView but properly deserialized.
}
Run Code Online (Sandbox Code Playgroud)

这是由Fiddler捕获并格式化的JSON:

{
    "id": "row_1377",
    "data": {
        "ROTATION": "1",
        "EQUIPMENT": [{
            "id": "6"
        },
        {
            "id": "8"
        }],
        "NOTES": ""
    }
}
Run Code Online (Sandbox Code Playgroud)

使用JSON.Net但不使用Web API控制器进行序列化的示例类:

[Serializable]
public class EditorSubmissionMainView
{
    public string id { get; set; }
    public EditorSubmissionMainViewData data { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc json.net asp.net-web-api

16
推荐指数
1
解决办法
2万
查看次数

在Json.net中全局设置IgnoreSerializableAttribute

我正在开发一个ASP.NET WebApi(Release Candidate)项目,我正在使用标有[Serializable]属性的几个DTO.这些DTO超出了我的控制范围,所以我无法以任何方式修改它们.当我从get方法返回任何这些时,生成的JSON包含一堆k__BackingFields,如下所示:

<Name>k__BackingField=Bobby
<DateCreated>k__BackingField=2012-06-19T12:35:18.6762652-05:00
Run Code Online (Sandbox Code Playgroud)

基于我已经完成的搜索,这似乎是JSON.NET的IgnoreSerializableAttribute 设置的问题,并且为了解决我的问题,我只需要像文章建议的那样全局设置它.如何在ASP.NET Web api项目中全局更改此设置?

json.net asp.net-web-api

13
推荐指数
1
解决办法
8950
查看次数

标签 统计

asp.net-web-api ×2

json.net ×2

asp.net-mvc ×1

c# ×1