相关疑难解决方法(0)

如何更改数字反序列化的默认类型?

我正在将一些属性反序列化为a Dictionary<string, object>.

当我反序列化JSON一些,它填充DictionaryInt64对象,而不是Int32.我希望它能够选择Int32作为默认值,知道我可以使用转换时会溢出的javascript数字.在这种情况下抛出异常是完全可以接受的.

有没有办法实现这一目标?我希望有一些很好的属性或一个方便的界面,可以实现并添加到JsonSerializer.而且我担心我必须深入到Json.NET的深处.

基本上我想有一些方法来控制对象的已知类型,这样我就可以Int32代替Int64DateTimes不是代替Strings.

c# json.net

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

覆盖Json.Net中的默认原始类型处理

有没有办法在处理原始类型时覆盖Json.net的默认反序列化行为?例如,当将json数组反序列化为[3.14,10,"test"]类型object[] 3.14时,类型为10,double10类型long.反正我有可以拦截或覆盖此类型的决定,所以我可以反序列化值decimal,并int分别?

我基本上总是希望json整数总是返回,int并且浮动返回为decimal.这将节省我一些有注入doubledecimal转换在我的代码.

我已经考虑扩展Newtonsoft.Json.Serialization.DefaultContractResolver和实现自己的,Newtonsoft.Json.JsonConverter但我没有发现任何方法来实现这个所需的覆盖.

重现的示例代码

object[] variousTypes = new object[] {3.14m, 10, "test"};
string jsonString = JsonConvert.SerializeObject(variousTypes);
object[] asObjectArray = JsonConvert.DeserializeObject<object[]>(jsonString); // Contains object {double}, object {long}, object {string}
Run Code Online (Sandbox Code Playgroud)

.net c# primitive json.net

5
推荐指数
1
解决办法
3517
查看次数

标签 统计

c# ×2

json.net ×2

.net ×1

primitive ×1