LitJSON库,格式为FLOAT / DOUBLE问题

mar*_*ius 3 c# json litjson

由于JSON是一种可以写为字符串的格式,因此必须由库解释或有时由语言本身来解释。

在较旧的C#版本中,没有类似的东西。使用LitJSON库,我遇到以下问题,我有一个名为Vector3的类,其中包含3个浮点值(不是double)。

public class Vector3 {
 public float x{get;set;}
 public float y{get;set;}
 public float z{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

使用下面的LitJSON代码片段,它实际上应该用值填充Vector3的实例。

Vector3 test = JsonMapper.ToObject<Vector3>("{'x':1.0,'y':1.0,'z':1.0}");
Run Code Online (Sandbox Code Playgroud)

但是发生错误“无法为System.Single分配值(类型Single.Double)”

看来它只知道double但没有float:/

有什么解决办法吗?

小智 5

遇到同样的问题,终于找到了解决方案。在“ ToObject” /“ ToJson”之前添加这些代码行

JsonMapper.RegisterExporter<float>((obj, writer) => writer.Write(Convert.ToDouble(obj)));
JsonMapper.RegisterImporter<double, float>(input => Convert.ToSingle(input));
Run Code Online (Sandbox Code Playgroud)