如何将自定义字符串数据转为JSON并逐个提取数据?附Unity转换代码
解决思路与实现步骤
首先得说清楚,你当前的代码其实是把那个数组格式的字符串包装进了一个类对象里再序列化,这并不是真正把数组字符串解析成可操作的数组数据。咱们要实现的是把自定义的数组字符串转成可操作的数组对象,然后逐个提取元素,步骤如下:
1. 直接把数组字符串反序列化为数组对象
Unity的JsonUtility支持直接反序列化数组类型,不需要额外的包装类(这是最直接的方式)。你只需要把目标数组字符串直接反序列化为int[]类型就行:
using UnityEngine; public class DataParser : MonoBehaviour { // 你的自定义数组字符串 string arrayString = "[1,1,1,2,1,1,1,2,1,3,1,1,1,2,1,3]"; void Start() { // 直接将数组字符串反序列化为int数组 int[] dataArray = JsonUtility.FromJson<int[]>(arrayString); // 现在dataArray就是可操作的数组了,接下来可以逐个提取数据 ExtractData(dataArray); } // 逐个提取数据的方法 void ExtractData(int[] array) { Debug.Log("逐个提取的数据:"); // 方式一:用foreach遍历每个元素 foreach (int num in array) { Debug.Log(num); } // 方式二:用索引精准访问(比如取第3个元素,索引从0开始) // int thirdElement = array[2]; // Debug.Log("第三个元素:" + thirdElement); } }
2. 如果需要用包装类(适配后续扩展需求)
如果你后续需要给这个数组加上其他元数据(比如版本号、备注信息),可以用一个序列化类来包装数组,这样序列化/反序列化会更规范:
using UnityEngine; using System; [Serializable] public class DataContainer { public int[] dataArray; } public class DataParser : MonoBehaviour { string arrayString = "[1,1,1,2,1,1,1,2,1,3,1,1,1,2,1,3]"; void Start() { // 先把数组字符串包装成符合DataContainer格式的JSON string wrappedJson = "{\"dataArray\":" + arrayString + "}"; // 反序列化为DataContainer对象 DataContainer container = JsonUtility.FromJson<DataContainer>(wrappedJson); // 提取数组并逐个遍历元素 foreach (int num in container.dataArray) { Debug.Log(num); } } }
关键注意点
- 确保你的数组字符串是标准JSON格式(逗号分隔,多余空格不影响,
JsonUtility会自动处理) - 如果是自定义复杂类型的数组,只要该类型标记了
[Serializable]特性,同样可以用这个方法反序列化
内容的提问来源于stack exchange,提问作者Ginxxx
相关产品推荐
相关产品推荐

