如果您不想编写用于镜像整个 JSON 结构的类,您可以使用 SimpleJSON(将 SimpleJSON.cs 复制粘贴到您的资产中)并执行类似的操作
IEnumerator Start()
{
UnityWebRequest wr = UnityWebRequest.Get("http://localhost:55150/api/values");
yield return wr.SendWebRequest();
string a = wr.downloadHandler.text;
Debug.Log(a);
var jsonObject = JSON.Parse(a);
foreach (var element in jsonObject)
{
var elementName = element.Value["name"];
// do something with elementName
Debug.Log(elementName);
}
}
更新:排序
由于您还要求排序:您可以使用 Linq OrderBy 和 OrderByDescending 进行排序。幸运的是 SimpleJSON 已经有一个实现,所以你可以使用 .Linq 将 jsonObject 变成 IEnumerable:
using System.Linq;
//...
var jsonObject = JSON.Parse(a);
foreach (var element in jsonObject.Linq.OrderByDescending(kvp => int.Parse(kvp.Value["id"])))
{
var elementName = element.Value["name"];
// do something with elementName
Debug.Log(elementName);
}
注意,这可能会为任何格式错误的 JSON 字符串引发异常。
否则你必须将整个结构实现为类(和一个包装器,因为你得到一个列表)并且可以使用Unity JsonUtility
[Serializable]
public class DataList
{
public List<DataItem> items = new List<DataItem>();
}
[Serializable]
public class DataItem
{
public int id;
public string name;
public string family;
public string des;
}
然后做
IEnumerator Start()
{
UnityWebRequest wr = UnityWebRequest.Get("http://localhost:55150/api/values");
yield return wr.SendWebRequest();
string a = wr.downloadHandler.text;
Debug.Log(a);
DataList dataList = JsonUtility.FromJson<DataList>(a);
foreach (DataItem item in dataList.items)
{
// do something with element.name
Debug.Log(item.name);
}
}