【发布时间】:2019-10-25 07:58:12
【问题描述】:
众所周知,最好使用字符串格式来序列化十进制数。 https://stackoverflow.com/a/38357877/4805491
许多服务将十进制值作为字符串发送,Json.NET 可以很好地对其进行反序列化。
但是我找不到如何用字符串格式序列化十进制?
我应该为所有十进制数字自定义JsonConverter吗?或者有办法通过默认的Json.NET 机会来做到这一点?
更新
我需要通过这个测试。
所以,我需要在何时或之后将所有十进制值替换为字符串值
JToken.FromObject( ... ) 被调用。
var json = await Client.RequestJsonAsync( desc, default );
var obj = json.ToObject<MyObject>();
var json2 = JToken.FromObject( obj );
Assert.IsTrue( JToken.DeepEquals( json, json2 ), "Jsons are not equal" );
不幸的是,没有(或者我找不到)方法来全部替换层次结构中的所有节点。 JToken.Replace 只会替换自己。此外,我看不到在层次结构中进行迭代的方法。
【问题讨论】:
-
请参阅Json.net serialize numeric properties as string。答案是专门针对
int的,改成decimal就行了。还有Convert long number as string in the serialization 和JsonSerializer - serialize decimal places with 'N2' formatting。这些能回答你的问题吗?
标签: json.net