Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将十进制序列化为人类可读的货币格式_C#_Json_Serialization_Currency - Fatal编程技术网

C# 将十进制序列化为人类可读的货币格式

C# 将十进制序列化为人类可读的货币格式,c#,json,serialization,currency,C#,Json,Serialization,Currency,我正在使用json.net库序列化一个对象,该对象具有表示成本的十进制值。序列化时,我希望json看起来像“400000美元”,而不是“400000.0” 有没有一种方法可以让我轻松高效地完成这项任务?此对象包含许多其他辅助对象和后续属性 应用程序将在本地使用,规范规定输出应为人类可读的格式。在这种情况下,区域性差异并不重要。由于序列化程序直接访问您的属性这一事实无法解决,所以执行此操作并不容易 如果需要格式化的JSON输出,我建议编写一个helper类来封装要公开的类。不幸的是,我曾经为一些X

我正在使用json.net库序列化一个对象,该对象具有表示成本的十进制值。序列化时,我希望json看起来像“400000美元”,而不是“400000.0”

有没有一种方法可以让我轻松高效地完成这项任务?此对象包含许多其他辅助对象和后续属性


应用程序将在本地使用,规范规定输出应为人类可读的格式。在这种情况下,区域性差异并不重要。

由于序列化程序直接访问您的属性这一事实无法解决,所以执行此操作并不容易

如果需要格式化的JSON输出,我建议编写一个helper类来封装要公开的类。不幸的是,我曾经为一些XML报告这样做过一次,实际上最简单的方法是这样:

class PersonXml
{
   Person _person;

   void PersonXml(Person person) { _person = person; }

   string Age { get { return _person.Age + " years"; } }
}
这只是一个简单的例子,我写的飞行,但原则总是一样的。即使一些高级JSON序列化程序为我提供了格式化输出的方法,我也会将这个概念从我的主对象中排除在一个单独的文件中,并使用单独的帮助器类

同样,这不是一个很好的解决方案,在我看来,它永远不应该出现在这个问题上,但如果它出现了,这是我经历中的较小的邪恶


另外,请注意,如果在属性getter中引用该类,则存在空引用的危险。

正如D Stanley所建议的,我将字段类型从decimal更改为string,因为其中的数据仅被读取,不用于数据操作。

为什么?JSON是一种电子交换格式,不一定是为可读性而设计的。如果您想要格式化的值,请使用字符串而不是十进制。我同意不在非固定区域性中序列化。如果是,比如。就像大多数欧洲国家一样?你是在当前的文化环境中进行序列化,以便对编写文件的人来说是正确的,还是你将其序列化,比如说,en-US,疏远那些不使用美元的人,那些不使用逗号的人,等等?一旦你格式化数据并将其序列化,你就将自己置身于一个充满伤害的世界。我是根据经验说的。您需要将属性序列化为字符串,因为非常简单,区域性不变,并且不允许任何类型的货币前缀。另外,第二个警告是@WaiHaLee,您可能会创建一个其他地区的人无法读取的文件。请尝试查看。它几乎可以将任何内容转换为人类可读的格式。但是,特别是对于您的场景,您可以只使用trungc