由于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}");但是出现了一个错误:“无法将值(Single.Double类型)赋给System.Single”
似乎它只知道双倍,而不知道浮子:/
有什么解决办法吗?
发布于 2014-09-25 10:24:58
我想发表意见,但我的声誉却是< 50。
我在Unity3D (脚本语言Mono C#)中使用了Unity3D。我在将json解析到一个对象时也遇到了同样的问题,这个对象有很多浮点数。我向LitJson库添加了浮点支持。如果你还需要这个请告诉我。
发布于 2016-10-26 10:19:13
同样的问题,终于找到了解决办法。在"ToObject“/ "ToJson”之前添加以下代码行
JsonMapper.RegisterExporter<float>((obj, writer) => writer.Write(Convert.ToDouble(obj)));
JsonMapper.RegisterImporter<double, float>(input => Convert.ToSingle(input));发布于 2014-02-13 00:27:24
根据我从它们在Github上的源代码中所看到的,库支持双而非单一。
从他们的库中提取的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;https://stackoverflow.com/questions/21742126
复制相似问题