使 Newtonsoft JsonConvert 默认为 Int32 而不是 Int64

aca*_*cai 4 c#

我通过这样做将 Json 转换为 ExpandoObject

JsonConvert.DeserializeObject<ExpandoObject>(jsonText)
Run Code Online (Sandbox Code Playgroud)

我得到的整数是 Int64,但我更喜欢 Int32。

JsonConvert 中是否有任何设置可用于更改默认行为?

sty*_*ybl 8

线程中引用James Newton King(Newtonsoft.JSON 的制造商)的帖子:

Json.NET 默认将整数值读取为 Int64,因为无法知道该值应该是 Int32 还是 Int64,并且 Int64 不太可能溢出。对于类型化的属性,反序列化器知道将 Int64 转换为 Int32,但是因为您的属性是无类型的,所以您得到的是 Int64。

此类问题之前曾在 SO 上被问过。基本上归结为:您需要创建一个自定义转换器。如果不是针对您的对象,则针对整数。

有关该参考,请参阅答案由用户drzaus到底谁解决了这个问题,以及一个由恩兹,谁进入更多细节。