注意:
JsonUtility.FromJson 方法只能接受 json 对象,如果是 json 数组会提示错误 JSON must represent an object type
被转换的对象必须是可被序列化的,需要标记 [System.Serializable] 属性
模型类
[System.Serializable]
public class Item {
public int id;
public string name;
public string sprite;
}
// 接受 api 返回的 json 数据
[System.Serializable]
public class ItemData {
public List<Item> data;
public int total;
}
Json 数据结构(必须是对象)
{
"data": [
{
"id": 1,
"name": "gun1",
"sprite": "gun1.png"
},
{
"id": 2,
"name": "gun2",
"sprite": "gun2.png"
}
],
"total": 2
}
测试:
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class DateTest : MonoBehaviour {
void Start() {
string jsonString = File.ReadAllText(Application.dataPath + "/Data/ItemJsonFromApi.json");
ItemData itemDate = JsonUtility.FromJson<ItemData>(jsonString);
Debug.Log(itemDate.total);
foreach (var item in itemDate.data) {
Debug.Log(item.name);
}
}
}