因为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')
它似乎只知道双重但没有浮动:/
对此有何解决方案?
答案 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;