c# 读取json的问题,JObject不能强转成JArray

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 读取json的问题,JObject不能强转成JArray相关的知识,希望对你有一定的参考价值。

using Newtonsoft.Json.Linq;
JArray ja = (JArray)JsonConvert.DeserializeObject(reader[1].ToString());

我的Framewor是2.0用的是第三方库Newtonsoft.Json.dll
编译没问题,运行报错
无法将类型为“Newtonsoft.Json.Linq.JObject”的对象强制转换为类型“Newtonsoft.Json.Linq.JArray”。

参考技术A 用dynamic

JArray ja = (JArray)JsonConvert.DeserializeObject(reader[1].ToString());
换成
dynamic ja = JsonConvert.DeserializeObject(reader[1].ToString());追问

我的Framewor是2.0.你说的这个要4.0以上才能引用到

C# NEWTONSOFT.JSON读取json文件

public static void Readjson()
{
string jsonfile = "D://tsconfig1.json";

using (System.IO.StreamReader file = System.IO.File.OpenText(jsonfile))
{
using (JsonTextReader reader = new JsonTextReader(file))
{
JObject o = (JObject)JToken.ReadFrom(reader);
string a = o["lotname"].ToString();
var b = o["other"];
var c = b["lotaddress"];
var d = o["devices"];
foreach(JObject e in d)
{
var deviceID = e["deviceID"];
var name = e["name"];
var IP = e["IP"];
}
}
}

}

 

 

 

tsconfig1.json文件内容

{
"lotname": "停车系统",
"devices": [
{
"deviceID": "EI1001",
"name": "东道进口相机",
"type": "进口",
"IP": "192.168.1.100"
},
{
"deviceID": "EI1002",
"name": "东道进口语音屏",
"type": "进口",
"IP": "192.168.1.102"
},
{
"deviceID": "EO1003",
"name": "东道出口相机",
"type": "出口",
"IP": "192.168.1.103"
},
{
"deviceID": "EO1004",
"name": "东道出口语音屏",
"type": "出口",
"IP": "192.168.1.104"
}
],
"other": { "lotname": "wz001", "lotaddress": "wenzhou" }
}

注意:记事本另存为 以上内容时编码选择 U-TF8
















































以上是关于c# 读取json的问题,JObject不能强转成JArray的主要内容,如果未能解决你的问题,请参考以下文章

JSONObject能不能强转成String类型?

List不能强转成Page

C# NEWTONSOFT.JSON读取json文件

C#常用方法——JObject解析json对象

C# 通过JObject解析json对象

带有 Json 的 Windows Phone - 从 JsonReader 读取 JObject 时出错