是否可以在文本文件中以JSON格式(字符串,对象)存储十进制值,然后将其作为十进制检索,而不必进行任何类型转换/解析等?
例如,文件也可以存储在其中的双精度数,这些不应该被解析为小数.
该文件不包含确定变量类型的其他信息:
"num1":4,
"num2":5.4,(双倍)
"num3":563.2334(十进制)
是的,可以通过二进制编写器:
using(var bw = new BinaryWriter(File.OpenWrite("myFile.txt")))
{
bw.Write(1234.01m); //there is actualy 16 bytes written to file. Double is 8 bytes long.
bw.Write((double)5);
}
Run Code Online (Sandbox Code Playgroud)
这样您就可以避免解析其文本表示并加载到内存中:
using(var br = new BinaryReader(File.OpenRead("myFile.txt")))
{
var myDecimal = br.ReadDecimal();//1234.01
var myDouble = br.ReadDouble();//5
}
Run Code Online (Sandbox Code Playgroud)
您不需要任何其他数据.十进制和双精度在内存中有不同的大小:
因此,如果你想将你的值存储在JSON中那么糟糕,以便能够快速提取它 - >不要这样做.它可能不值得,这就是为什么:
JSON本身是可解析的格式,即使将其存储在字节数组中,它也会解析/转换它.如果您更喜欢速度而不是可读性 - 请使用其他序列化框架.例如,protobuf.