这是读取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/