Unity中解析含小数点的JSON时返回空值问题求助
解决Unity中JSON解析字符串数组遇小数为空的问题
嘿,我在Unity开发中也碰到过类似的JSON解析坑,咱们一步步拆解问题,找到解决方案!
先排查最容易忽略的JSON格式问题
首先,别着急看代码,先确认你的JSON本身有没有隐形错误。有时候看起来格式类似,但带小数的JSON可能存在:
- 多余的尾逗号(比如最后一个元素后面多了个逗号)
- 小数格式不合法(比如
1.2.3这种多小数点的情况) - 元素类型不统一(比如有的是字符串带引号,有的是数字不带引号)
建议找个在线JSON校验工具(比如JSONLint)把你的JSON粘进去检查,先排除格式层面的问题。
核心问题:类型不匹配
这是最常见的原因!你要解析成字符串数组,但如果JSON里的小数是数字类型(没有被双引号包裹),Unity的解析工具会因为类型不匹配直接返回空数组:
- 正确的字符串数组JSON应该是:
["1.5", "3.2"](每个小数都在引号里) - 如果你的JSON是:
[1.5, 3.2](纯数字数组),强行解析成string[]必然失败
对应解决方案:
- 修改JSON格式:把所有小数元素用双引号包裹,明确为字符串类型
- 调整解析目标类型:如果JSON就是数字数组,那就解析成
float[]或double[],之后再转成字符串数组:// 示例:用JsonUtility解析数字数组再转字符串 [Serializable] public class FloatArrayWrapper { public float[] values; } var wrapper = JsonUtility.FromJson<FloatArrayWrapper>(jsonString); string[] stringArray = wrapper.values.Select(f => f.ToString()).ToArray();
Unity JsonUtility的局限性要注意
如果你用的是Unity自带的JsonUtility,它有个很容易踩的坑:不支持直接解析顶级数组!也就是说,你不能直接写:
// 错误写法:JsonUtility无法直接解析顶级数组 string[] arr = JsonUtility.FromJson<string[]>(jsonString);
哪怕是合法的字符串数组,这样写也可能返回空。必须用一个可序列化的包装类来包裹数组:
// 正确写法:用包装类解析 [Serializable] public class StringArrayWrapper { public string[] values; } var wrapper = JsonUtility.FromJson<StringArrayWrapper>(jsonString); string[] result = wrapper.values; // 这里就能拿到正确的数组了
试试更强大的Newtonsoft.Json
如果你的JSON结构比较灵活,建议改用Unity官方提供的Newtonsoft.Json包(在Package Manager里搜索Newtonsoft.Json就能安装)。它对顶级数组、类型转换的支持要好得多:
// 示例1:直接解析字符串数组(JSON元素是带引号的字符串) string[] stringArray = JsonConvert.DeserializeObject<string[]>(jsonString); // 示例2:把数字数组转成字符串数组(JSON元素是纯数字) var jsonArray = JArray.Parse(jsonString); string[] stringArray = jsonArray.Select(item => item.ToString()).ToArray();
调试技巧帮你定位问题
解析前后加日志,能快速找到问题所在:
Debug.Log("原始JSON:" + jsonString); var result = ...; // 你的解析代码 Debug.Log("解析结果长度:" + (result?.Length ?? 0)); if (result != null) { foreach (var item in result) { Debug.Log("元素:" + item); } }
另外,打开Unity Console的详细日志(Edit > Project Settings > Player > Other Settings > Configuration > Logging > Verbose),有时候JsonUtility解析失败会有隐藏的警告信息。
内容的提问来源于stack exchange,提问作者Maxi
相关产品推荐
相关产品推荐

