关于litJson的System.InvalidCastException

时间:2024-07-03 12:37:02

最近在做一个Unity3D的项目,用到了litJson库, 它比JavaScript里的JSON解析更加严格, 有时候解析数据的时候会出现类型不对.

比如说 {"data":12} 中的12没有用引号包起来, 就不能把它当作字符串来读取了, 只能当作int来读取.

另外如果碰到了 {"data":12.00}, 不能想当然地当作float来读取, 而是要当作double来读取的.

对于从来没有用过litJson的人来说有个最保险的方法, 如果碰到了解析报错说 "System.InvalidCastException"  指定的类型转换无效, 可以把字段的类型输出来,然后再解析.

代码如下:

string data = "{'val':1.00}";
JsonData jd = JsonMapper.ToObject(data);
JsonData val = jd["va"];
Debug.log(val.GetJsonType());//输出发现是double类型
float f = (float)(double)val;