【发布时间】:2015-11-13 15:09:40
【问题描述】:
传递一个像这样的 Json 值(这将是代码中的 var jsonValue):
"{\"Something\":0,\"Something2\":10,\"Something3\":{\"Something4\":17,\"Something5\":38042,\"Something6\":38043,\"Id\":215},\"Something7\":215,\"SomethingId\":42,\"Something8\":\"AString, Gläser\",\"Something8\":\"44-55-18\",\"Status\":{\"Caption\":\"Fixed\",\"Value\":7},\"Type\":\"Article\",\"Id\":97,\"@Delete\":true,\"Something9\":\"8\"}"
转至以下代码:
var deserializer = new JsonSerializer();
const string regex = @"/Date\((.*?)\+(.*?)\)/";
var reader = new JsonTextReader(new StringReader(jsonValue));
returnValue = deserializer.Deserialize(reader, type);
type 是 https://dotnetfiddle.net/LMPEl0 的类型(谢谢 Craig)(对不起,奇怪的名字,不能透露实际的名字......)
jsonvalue 是通过在 DataTable 的可编辑单元格中输入生成的,并且显然将以前的 null 值放在 json 字符串的末尾。
我在 returnValue 的“Something9”属性中得到一个空值,而不是 8(Something9 之前为空,并通过 DataTable 的可编辑单元格设置为 8) 我看不到的 Json 值是否存在问题? 还是我需要在 Deserializer 中进行一些设置?
谢谢
【问题讨论】:
-
Something9 包含字符串,也许您的班级将 Something9 作为 Integer 并且它不解析它..?
-
确实是类中的整数。我应该将输入更改为您认为的整数吗?
-
你的代码 sn-p 中的“类型”是什么?
-
@DimitrisG。 - 是的,在代码或 json 中更改它。
-
抱歉,本例中的类型是 {Name = "PositionDto" FullName = "MyProject.Contracts.Data.Events.PositionDto"} 另外一个重要的注意事项是,Something9 作为属性通常在 " Something2”,但由于某种原因,当创建 json 对象时,它被放在最后,这可能会导致问题。我会将此信息添加到问题中。也谢谢大家的快速解答!
标签: c# json jsonserializer