c# 一键解析 Kepserver json点位文件

如下,利用Kepserve与PLC通讯,建立点位后需根据点位名称建立连接通讯,手动建立时太过繁琐,利用c#解析json功能一键解析所有创建的点位信息动态添加到数据库,方便快捷。

{
	"project": {
		"common.ALLTYPES_DESCRIPTION": "使用模拟器驱动程序的示例项目",
		"servermain.PROJECT_TITLE": "模拟器驱动程序演示",
		"channels": [
			{
				"common.ALLTYPES_NAME": "Chanel",
				"common.ALLTYPES_DESCRIPTION": "模拟器通道示例",
				"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator",
				"devices": [
					{
						"common.ALLTYPES_NAME": "Group",
						"common.ALLTYPES_DESCRIPTION": "模拟器设备示例",
						"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator",
						"tags": [
							{
								"common.ALLTYPES_NAME": "Item1",
								"common.ALLTYPES_DESCRIPTION": "用于验证客户端连接的加速读/写标记",
							},
							{
								"common.ALLTYPES_NAME": "Item2",
								"common.ALLTYPES_DESCRIPTION": "用于验证客户端连接的常量读/写标记",
							}
						]
					}
				]
			},
			{
				"common.ALLTYPES_NAME": "opcGroup",
				"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Siemens TCP/IP Ethernet",
				"devices": [
					{
						"common.ALLTYPES_NAME": "Group",
						"common.ALLTYPES_DESCRIPTION": "1010工位",
						"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Siemens TCP/IP Ethernet",
						"tag_groups": [
							{
								"common.ALLTYPES_NAME": "Client",
								"common.ALLTYPES_DESCRIPTION": "客户端",
								"tags": [
									{
										"common.ALLTYPES_NAME": "Item1",
										"common.ALLTYPES_DESCRIPTION": "工件到位",
									}
								]
							},
							{
								"common.ALLTYPES_NAME": "Server",
								"common.ALLTYPES_DESCRIPTION": "服务端",
								"tags": [
									{
										"common.ALLTYPES_NAME": "Item1",
										"common.ALLTYPES_DESCRIPTION": "工件到位",
									}
								]
							}
						]
					}
				]
			}
		]	
	}
}

 

代码如下:

 static void Main(string[] args)
        {
            var jsonContext = File.ReadAllText(@"C:\Users\Administrator\Desktop\Group.json");
            JObject output = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonContext);
            var json = output["project"]["channels"].ToList();

            foreach (var item in json)
            {
                var channelsName = item["common.ALLTYPES_NAME"].ToString();
                foreach (var devices in item["devices"].ToList())
                {
                    var devicesName = devices["common.ALLTYPES_NAME"]?.ToString();
                    var devicesDesc = devices["common.ALLTYPES_DESCRIPTION"]?.ToString();
                    var flagTags = !string.IsNullOrEmpty(devices["tags"]?.ToString());

                    if (flagTags)
                    {
                        foreach (var tags in devices["tags"].ToList())
                        {
                            var itemName = tags["common.ALLTYPES_NAME"]?.ToString();
                            var itemDesc = tags["common.ALLTYPES_DESCRIPTION"]?.ToString();

                            Console.WriteLine(channelsName + "." + devicesName + "." + itemName);
                            Console.WriteLine(itemDesc);
                            Console.WriteLine(" --  ");
                        }
                    }
                    else
                    {
                        foreach (var tag_groups in devices["tag_groups"].ToList())
                        {
                            var tag_groupsName = tag_groups["common.ALLTYPES_NAME"]?.ToString();
                            var tag_groupsDesc = tag_groups["common.ALLTYPES_DESCRIPTION"]?.ToString();

                            foreach (var tags in tag_groups["tags"])
                            {
                                var tag_Name = tags["common.ALLTYPES_NAME"]?.ToString();
                                var tag_Desc = tags["common.ALLTYPES_DESCRIPTION"]?.ToString();


                                Console.WriteLine(channelsName + "." + devicesName + "." + tag_groupsName + "." + tag_Name);
                                Console.WriteLine(tag_Desc);
                                Console.WriteLine(" --  ");
                            }
                        }
                    }
                }
            }





            Console.Read();
        }

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值