.Net关于前端使用Newtonsoft.Json序列化的问题

实现目标:实现一个以Json格式传输List<T>类型数据的WebApi接口,并在终端实现正确转化与匹配

接口部分:

将List<T>类型数据转换为Json类型字符串:

  public static string ToJson(this object obj)
        {
            var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
            return JsonConvert.SerializeObject(obj, timeConverter);
        }

       reportList.ToJson();//reportList为List<T>

终端部分:

根据URL获取接口数据,存放于字符串jsonString中:

 string jsonString = (RESTHelper.GetRestReturnJsonStr(url));

注意:获取的字符串格式与SerializeObject()方法转化的Json字符串是有区别的:

   SerializeObject()方法转换得到的字符串:   str1  =  “[{"ReportId":1789,"ReportTypeId":1,...}]”

   终端获取到的字符串:                                 str2  = “ "[{\"ReportId\":1789,\"ReportTypeId\":1,...}]"”

可以看到,相比于str1,字符串str2在首尾处各多出一个双引号,且属性字段前后各有一个反斜杠’\‘(因为在微软中,“\“”是作为双引号用的),

所以字符串jsonString需要先处理后才能夹下反序列化:

string Json=jsonString.Replace("\\", "").TrimStart('\"').TrimEnd('\"');

JsonConvert.DeserializeObject<List<T>>(Json);

 

posted @ 2019-03-05 20:25  云梦&&玄龙  阅读(366)  评论(0)    收藏  举报