需要rules/doc将JSON转换为c#类



我正在尝试解决一个调用c# webApi2项目的角控制器的问题。

我不认为我完全理解c#是如何将JSON转换为类型的。

我经常在webform_变量 中得到null
[System.Web.Http.HttpPatch]
[Route("{itemId_}")]
public IHttpActionResult PatchItemById([FromUri] int itemId_, [FromBody] parent webForm_)


如果我传入格式错误的JSON,我当然可以使值为NULL。有道理。

似乎c#在"使json适合预期的类"方面做得很好取这个JSON

{ "name":"test",
"children":  [{
"nm": "child1",
"v1": "NM",
"v2": "12000000",
"v3":  546
}]
}

这些类

public class parent {
public string name;
public sillyObject[]   children;
} 
public class mSillyObject
{
public string nm;
public string v1;
public string v2;
public string r;
public string a;

}

这似乎工作,即使JSON有元素不在类中,反之亦然。生成的对象将尽可能地填充所有字段

然而,在其他时候,我得到webform = null_即使JSONLint告诉我我在发送有效的JSON。

我用谷歌搜索了我能想到的所有方法。
一定有什么文档解释了这个?谁能提供一些文档链接,或者提供一些关于故障排除和常见错误的想法?

tyia格雷格

你可以在你的json中尝试这样做,用父类替换mproject,使itemId_可选并删除HttpPath

[Route("{itemId_?}")]
public IHttpActionResult PatchItemById([FromUri] int itemId_, [FromBody] parent webForm_)

还是很有兴趣了解一下这是如何工作的。

我已经能够确定这些规则

  • json可以有模型没有的属性
  • 模型可以有json
  • 中没有的属性。

如果模型具有public string property1而json具有"property1" : [],则强制转换将失败。数组是否有内容似乎并不重要。c#正在查找单个项,而不是数组。

如果模型有public sillyObject silly;

  • 拥有JSON中缺少的属性
  • "silly" : null工作
  • 设置"silly" : {}会导致强制转换失败

如果我遇到任何问题,我会在这里发布更多的问题。或者如果我找到一篇描述这个的文章

相关内容

  • 没有找到相关文章

最新更新