我正在使用
System.Text.Json
在 .NET Well 类对象和 JSON 之间进行(反)序列化。 Well 类对象有一个层列表 List<Layer> layers
,Layer 类有一个项目列表 List<Item> items
Item
类具有 string name
、double length
等属性。课程如下:
public class Well
{
public string name {get; set;}
public List<Layer> layers {get; set;}
public void serialiseJSON()
{
string fileName = "well.json";
string jsonString = JsonSerialiser.Serialize(this);
File.WriteAllText(fileName, jsonString);
return;
}
}
public class Layer
{
public string name {get; set;};
public List<Item> items {get; set;}
}
public class Item
{
public string name {get; set;};
public double length {get; set;}
}
例如,当
item.length
值为 70.8
时,在序列化 Well 后,它将作为 70.799999999999997
写入文件。据我所知,如果我错了,请纠正我,这是由于双精度数据类型的精度,但我不明白为什么双精度值的写法不同。类实例具有正确的值,但将其序列化为 json 文件会在文件中更改它。任何帮助将不胜感激。
注意:出于一致性原因,我不希望将双精度值作为字符串保存在 json 文件中。
我设法通过将
Item
成员更改为 decimal
类型 来解决此问题
public class Item
{
public string name {get; set;};
public decimal length {get; set;}
}