System.InvalidOperationException:无法访问Newtonsoft.Json.Linq.JValue上的子值

时间:2019-04-02 16:56:21

标签: c# json

我正在尝试解决这个问题,但找不到任何解决方案。

这是C#代码。

string unraw_json = reader.ReadToEnd();

            var objects = JArray.Parse(unraw_json);

            foreach (JObject items in objects)
                foreach (KeyValuePair<String, JToken> app in items)
                {
                    var appName = app.Key;
                    var username = (String)app.Value["username"];
                    var password = (String)app.Value["password"];

当我到达var appName = "username"时(第9行)调试var username时,会抛出该错误。

我已经尝试过将json包含在大括号中,但是它在var appName上引发了错误。我也尝试过使用不同的解析和不同的库,但是我想使用Newtonsoft.Json.Linq库。谁能帮我吗?谢谢。

这是JSON文件:

[
  {
    "username": "root",
    "password": "toor"
  }
]

1 个答案:

答案 0 :(得分:1)

您的内部foreach遍历KeyValuePair中的每个 itemsappKeyValuePair<String, JToken>,其中 key "username",而 value 是包含{{1 }}。您正在JToken"root"索引一层太深。

由于您已经知道所需的键,因此根本不需要遍历["username"]。只需直接索引["password"]

items