【发布时间】:2015-03-10 13:32:36
【问题描述】:
我正在使用json.net 库来序列化一个对象,该对象具有代表成本的十进制值。序列化时,我希望 json 看起来像 '$400,000' 而不是 '400000.0'。
有没有一种方法可以让我轻松高效地完成此任务?此对象包含许多其他次要对象和后续属性。
应用程序将在本地使用,并且规范说输出应该是人类可读的格式。在这种情况下,文化差异并不重要。
【问题讨论】:
-
为什么? JSON 是一种电子 交换格式,不一定是为了可读性而设计的。如果您想要格式化值,请使用
string而不是decimal。 -
我同意除了不变的文化之外不要序列化。如果NumberFormatInfo.CurrencyGroupSeparator 是,比如说,“。”怎么办?就像欧洲大部分地区一样?你是在当前的文化中连载,这样对于编写文件的人来说都是正确的,还是你连载它,比如说,“en-US”,疏远那些不使用美元的人,那些不使用美元的人'不使用逗号等?一旦您格式化 数据以对其进行序列化,您就会向一个充满伤害的世界敞开大门。 (我说的是经验)。
-
您需要将您的属性序列化为字符串,因为JSON standard for numerical values 非常简单,文化不变,并且不允许任何类型的货币前缀。此外,@WaiHaLee 的第二个警告是,您可能会创建一个其他地区的人无法读取的文件。
-
尝试查看Humanizer。它几乎可以将任何东西转换为人类可读的格式。不过,专门针对您的场景,您可以
ToString("C")
标签: c# json serialization currency