LitJSON库格式为FLOAT / DOUBLE问题

时间:2014-02-12 23:25:16

标签: 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;}
}

使用以下剪切的LitJSON代码,它实际上用值填充了Vector3的实例。

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

但是出现错误'无法为System.Single分配值(类型Single.Double')

它似乎只知道双重但没有浮动:/

对此有何解决方案?

3 个答案:

答案 0 :(得分:4)

有同样的问题,终于找到了解决方案。 在“ToObject”/“ToJson”

之前添加这些代码行
JsonMapper.RegisterExporter<float>((obj, writer) => writer.Write(Convert.ToDouble(obj)));
JsonMapper.RegisterImporter<double, float>(input => Convert.ToSingle(input));

答案 1 :(得分:3)

我想评论,但我的声誉是&lt; 50.

我在Unity3D中使用LitJson(脚本语言Mono C#)。在将json解析为具有大量浮动mebmbers的对象时,我遇到了同样的问题。我已经为LitJson库添加了浮点支持。如果您仍然需要,请告诉我。

答案 2 :(得分:2)

从我在Github的源代码中看到的,该库支持Double而不是Single

从他们的库中提取Jsondata.cs

#region Fields
private IList<JsonData> inst_array;
private bool inst_boolean;
private double inst_double;
private int inst_int;
private long inst_long;
private IDictionary<string, JsonData> inst_object;
private string inst_string;
private string json;
private JsonType type;