C# JSon 解析器错误

标签 c# json

这是读取Json文件的代码部分。

           using (StreamReader streamReader = new StreamReader(tplFile, Encoding.GetEncoding("GB2312")))
            {
                try
                {
                    new JsonSerializer();
                    JsonTextReader reader = new JsonTextReader(streamReader);
                    JObject jObject = JObject.Load(reader);
                    JToken jToken = jObject["general"];
                    foreach (JToken current in (IEnumerable<JToken>)jToken)
                    {
                        PrintItem item = default(PrintItem);
                        string text = current.ToString();
                        if (text.Contains("arryname"))
                        {
                            string text2 = current["arryname"].ToString();
                            item.arryName = text2;
                            JToken jToken2 = current["value"];
                            using (IEnumerator<JToken> enumerator2 = ((IEnumerable<JToken>)jToken2).GetEnumerator())
                            {
                                while (enumerator2.MoveNext())
                                {
                                    JToken current2 = enumerator2.Current;
                                    PrintItem item2 = default(PrintItem);
                                    string text3 = current2.ToString();
                                    if (text3.Contains("size"))
                                    {
                                        item2.size = Common.Convert2Int(current2["size"].ToString());
                                    }
                                    if (text3.Contains("format"))
                                    {
                                        item2.format = current2["format"].ToString();
                                    }
                                    if (text3.Contains("value"))
                                    {
                                        item2.value = current2["value"].ToString();
                                    }
                                    if (text3.Contains("align"))
                                    {
                                        item2.align = Common.Convert2Int(current2["align"].ToString());
                                    }
                                    if (text3.Contains("style"))
                                    {
                                        item2.style = Common.Convert2Int(current2["style"].ToString());
                                    }
                                    if (text3.Contains("left"))
                                    {
                                        item2.left = Common.Convert2Int(current2["left"].ToString());
                                    }
                                    if (text2 == "items")
                                    {
                                        this.gtempItemList.arryname.Add(item2);
                                    }
                                    else
                                    {
                                        if (text2 == "pays")
                                        {
                                            this.gtempItemList.pays.Add(item2);
                                        }
                                    }
                                }
                                goto IL_376;
                            }
                            goto IL_27E;
                        }
                        goto IL_27E;
                    IL_376:
                        this.gtempItemList.ItemList.Add(item);
                        continue;
                    IL_27E:
                        if (text.Contains("size"))
                        {
                            item.size = Common.Convert2Int(current["size"].ToString());
                        }
                        if (text.Contains("format"))
                        {
                            item.format = current["format"].ToString();
                        }
                        if (text.Contains("value"))
                        {
                            item.value = current["value"].ToString();
                        }
                        if (text.Contains("align"))
                        {
                            item.align = Common.Convert2Int(current["align"].ToString());
                        }
                        if (text.Contains("style"))
                        {
                            item.style = Common.Convert2Int(current["style"].ToString());
                        }
                        if (text.Contains("left"))
                        {
                            item.left = Common.Convert2Int(current["left"].ToString());
                            goto IL_376;
                        }
                        goto IL_376;
                    }
                }
            }
            this.Refresh();
        }

    }

这是我的代码。

{
    "general": {
        "arryname": "name1",
        "value": {
            "size": "10",
            "format": "L100"
        }
    }
}

这是我的 JSon 文件。

当代码string text2 = current["arryname"].ToString();运行时,出现错误

Cannot access child value on Newtonsoft.Json.Linq.JProperty.

发生了。

我找不到理由。

最佳答案

您应该用数组更改 json 文件。 数组键是[]。

关于C# JSon 解析器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33322332/

相关文章:

c# - 平均列表<int>的最有效方法

c# - Github 上次提交?

c# - 如何检查 ContentPlaceHolder 是否为空?

json - Loggly - 重构上下文格式 - 索引唯一字段名限制

javascript - JS Fetch JSON解析正在修改对象

c# - 如何将非命名空间类型导入 IronPython?

c# - Linq 查询在 List 对象中存储一对多集合

javascript - jQuery ajax 响应显示在浏览器中而不是传递给回调函数

javascript - .map 不是 javascript 中的函数

java - Faunus json 读取器在 json 文件格式中出现错误