【发布时间】:2019-05-02 06:42:26
【问题描述】:
我试图从 json 文件(如下所示)中打印“items”中的所有子键,但在这一行得到一个无效的强制转换异常:
foreach (KeyValuePair<string, JToken> sub in (JObject)obj2["items"])
我不知道为什么它一直显示这个错误。
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class JsonReader : MonoBehaviour
{
[SerializeField]
public string filePath;
[ContextMenu("Load Data")]
private void LoadData()
{
JObject obj2 = JsonConvert.DeserializeObject<JObject>(File.ReadAllText(filePath));
foreach (KeyValuePair<string, JToken> sub in (JObject)obj2["items"])
{
Debug.Log(sub.Key);
}
}
}
JSON 文件内容
{
"items": [
{
"id": "143675",
"item": "Action Figure",
"name": "Goku",
"color": "Orange"
},
{
"id": "258943",
"item": "Water Bottle",
"name": "Pcares",
"color": "Silver"
},
{
"id": "326824",
"item": "White Board",
"name": "Boardy",
"color": "White"
},
{
"id": "423168",
"item": "Monitor",
"name": "Dell",
"color": "Black"
}
]
}
我希望预期的输出显示所有键,例如:
id
item
name
color
任何帮助将不胜感激!
【问题讨论】:
-
我会说 obj2["items"] 是一个 JArray,所以它不能转换为 JObject?你需要一个 foreach(JObject object in (Jarray)obj2["items"]) 首先然后遍历键? this might help