unity json数组
时间: 2025-03-05 14:40:03 浏览: 39
### 如何在 Unity 中解析和生成 JSON 数组
#### 使用 `JsonUtility`
`JsonUtility` 是内置于 Unity 的轻量级工具,适合简单的序列化需求。对于 JSON 数组的操作相对直观。
```csharp
using UnityEngine;
[System.Serializable]
public class Item {
public string name;
public int value;
}
void Start() {
// 创建对象列表
List<Item> itemList = new List<Item>() {
new Item {name="Item1", value=1},
new Item {name="Item2", value=2}
};
// 序列化为 JSON 字符串
string jsonString = JsonHelper.ToJson(itemList);
Debug.Log(jsonString);
// 反序列化回对象列表
List<Item> parsedItems = JsonHelper.FromJson<List<Item>>(jsonString);
foreach (var item in parsedItems) {
Debug.Log($"Name: {item.name}, Value: {item.value}");
}
}
```
为了支持 `JsonUtility` 对集合的支持,可以创建辅助类 `JsonHelper`[^1]:
```csharp
public static class JsonHelper {
public static T[] FromJson<T>(string json) {
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json);
return wrapper.Items;
}
public static string ToJson<T>(T[] array) {
Wrapper<T> wrapper = new Wrapper<T>();
wrapper.Items = array;
return JsonUtility.ToJson(wrapper);
}
[System.Serializable]
private class Wrapper<T> {
public T[] Items;
}
}
```
这种方法简单易懂,适用于大多数场景下的 JSON 数组操作。
#### 使用 `Newtonsoft.Json`
如果项目允许引入第三方库,则可以选择功能更强大的 `Newtonsoft.Json` 来处理复杂的 JSON 结构。
安装方式可以通过 NuGet 或者直接下载 DLL 文件并导入到 Unity 工程中。
下面是一个使用 `Newtonsoft.Json` 处理 JSON 数组的例子:
```csharp
using Newtonsoft.Json;
using System.Collections.Generic;
public class Example {
void Start() {
var items = new List<Item>
{
new Item{name = "Apple", value = 50 },
new Item{name = "Banana", value = 70 }
};
// 将 C# 列表转换成 JSON 字符串
string jsonData = JsonConvert.SerializeObject(items);
Debug.Log("Serialized Data:" + jsonData);
// 把 JSON 字符串反序列化为 C# 列表
List<Item> deserializedData = JsonConvert.DeserializeObject<List<Item>>(jsonData);
foreach(var item in deserializedData){
Debug.Log($"{item.name} : {item.value}");
}
}
}
```
此方法提供了更多的灵活性以及更好的性能表现,在面对复杂的数据结构时尤为有用。
阅读全文
相关推荐


















