我有个json:
[[“特拉维夫”、“别尔谢巴”、“耶路撒冷”、“海法”]、{“城市”:“特拉维夫”}、{“城市”:“别尔谢巴”}、{“城市”:“耶路撒冷”}、{“城市”:“海法”},{“城市”:“耶路撒冷”},{“城市”:“特拉维夫”},{“城市”:“海法”},{“城市”:“贝尔谢巴”},{“城市”:“耶路撒冷”},{“城市”:“耶路撒冷”},{“城市”:“海法”},{“城市”:“特拉维夫”},{“城市”:“特拉维夫”},{“城市”:“别尔谢巴”}]
我把它转换成一张清单:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft;
string jsonStr = "<json string from above>";
List<object> data;
private void Start()
{
data = Newtonsoft.Json.JsonConvert.DeserializeObject<List<object>>(jsonStr);
Debug.Log(data[0,0]);
}但是当dubugger得到“Debug.Log(data0,0)”时,它打印了:
严重性代码描述项目文件行抑制状态错误( CS0021 )不能将[]索引应用于类型'object‘Assembly-CSharp 31 Active的表达式
发布于 2018-07-01 09:13:19
字符串在List<object>中反序列化--列表只能用一个维度进行索引。
因此反序列化只创建两个类型为JArray的对象。
第一个是由四个城市组成的小组,第二个是由14个城市组成的数组。
获取第一个对象的第一个元素。
Console.WriteLine((data[0] as JArray)[0][0]);但是,如果要访问第二个JArray中的任何元素,则可以使用以下语法
Console.WriteLine((data[1] as JArray)[1]["City"]); // Beershebahttps://stackoverflow.com/questions/51121777
复制相似问题