.net c#后台将json字符串解析成对象,问题是json字符串二级数组的key值是动态的所以不能直接向对象转换

dynamic类的使用。

具体使用步骤:

json字符串:

strKeyPwd=%E2%80%9C1%E2%80%9D&strJsonData={%22deviceCode%22:0,%22deviceId%22:%221%22,%22devicePosition%22:0,
%22Points%22:[{%22IN1%22:0,%22IN1Date%22:%222018-07-31%2013:51:21%22},{%22IN2%22:1,%22IN2Date%22:%222018-07-31%2013:51:21%22},{%22IN3%22:1,%22IN3Date%22:%222018-07-
31%2013:51:21%22},{%22IN4%22:1,%22IN4Date%22:%222018-07-31%2013:51:21%22}]}

后台代码:

第一步:dynamic json = Newtonsoft.Json.Linq.JToken.Parse(strJsonData) as dynamic;//json字符串转成动态类型获取到一级字符串
             string deviceCode=json.deviceCode;
     第二步:dynamic s=json.Points;  //将二级的json字符串转成动态类型,这样就可以循环去出Poins值底下的集合
     第三步:string a = s.ToString();//将dynamic类型的值转成字符串进行过滤

          PointsItem model=new PointsItem();//新建一个实体类
            if (a.IndexOf("IN1") > -1)
            {
                int IN1 =0;
                int IN2 = 0;
                int IN3 = 0;
                int IN4 = 0;
                string IN1Date = "";
                string IN2Date = "";
                string IN3Date = "";
                string IN4Date = "";
                int i=0;
                foreach (var item in s)
                {
                    i++;
                    if (i == 1)
                    {
                        IN1 = item.IN1;
                        IN1Date = item.IN1Date;
                    }
                    if (i == 2)
                    {
                        IN2 = item.IN2;
                        IN2Date = item.IN2Date;
                    }
                    if (i == 3)
                    {
                        IN3 = item.IN3;
                        IN3Date = item.IN3Date;
                    }
                    if (i == 4)
                    {
                        IN4 = item.IN4;
                        IN4Date = item.IN4Date;
                    }
                }
                if (IN4 == 1)
                {
                    model.INs = 40;
                    model.INsDate = IN4Date;
                    return model;
                }
                else if (IN3 == 1)
                {
                    model.INs = 30;
                    model.INsDate = IN3Date;
                    return model;
                }
                else if (IN2 == 1)
                {
                    model.INs = 20;
                    model.INsDate = IN2Date;
                    return model;
                }
                else if (IN1 == 1)
                {
                    model.INs = 10;
                    model.INsDate = IN1Date;
                    return model;
                }   

猜你喜欢

转载自blog.csdn.net/u011189027/article/details/81478110