zoukankan      html  css  js  c++  java
  • C#基础---C#如何对Json字符串处理

        Json字符串对于做web应用的应该很熟悉,其实在很多请求我们返回的都是Json字符串。那对于C#代码如何处理Json字符串呢,.Net封装了一个类叫做JavaScriptSerializer[MSDN Library 链接http://msdn.microsoft.com/en-us/library/ee191864(v=vs.110).aspx];这个类提供了一个方法。

              下面这个是我在快递100往抓取的一个圆通的快递信息。对于我们有用的信息是快递时间,快递状况。那我该如何来做。 

    {"message":"ok","nu":"9356359685","ischeck":"1","com":"yuantong","status":"200","condition":"F00","state":"3","data":[{"time":"2014-09-01 21:19:06","context":"甘肃省武威市公司 已签收 ","ftime":"2014-09-01 21:19:06"},{"time":"2014-09-01 09:09:28","context":"甘肃省武威市公司 派件中 ","ftime":"2014-09-01 09:09:28"},{"time":"2014-09-01 09:06:27","context":"甘肃省武威市公司 已收入 ","ftime":"2014-09-01 09:06:27"},{"time":"2014-08-31 19:53:47","context":"甘肃省兰州市公司 已发出 ","ftime":"2014-08-31 19:53:47"},{"time":"2014-08-31 19:17:41","context":"甘肃省兰州市公司 已收入 ","ftime":"2014-08-31 19:17:41"},{"time":"2014-08-28 23:44:26","context":"广东省深圳市横岗公司 已打包 ","ftime":"2014-08-28 23:44:26"},{"time":"2014-08-28 23:19:12","context":"广东省深圳市横岗公司 已收件 ","ftime":"2014-08-28 23:19:12"},{"time":"2014-08-28 21:55:35","context":"广东省深圳市横岗公司 已收件 ","ftime":"2014-08-28 21:55:35"}]}
             1. 首先分析Json字符串结构. Json{ message,nu,isCheck,Data{time,context,ftime}};我们先定义一个类,取名为PostalDeliveryModel,类名的结构需要与Json结构对应,名称需要保持一样[忽略大小写],其次对应的字段说会自动转换类型的,类型如果不符合会抛出异常
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TestJson
    {
        public class PostalDeliveryModel
        {
            private string message = string.Empty;
            private string nu = string.Empty;
            private List<SingalData> data = new List<SingalData>();
    
            // Puclic的名字需要与Json字符串相同,但是忽略大小写
            public string Message 
            {
                get { return this.message; }
                set { this.message = value; }
            }
    
            public string Nu
            {
                get { return this.nu; }
                set { this.nu = value; }
            }
    
            public List<SingalData> Data
            {
                get { return this.data; }
                set { this.data = value; }
            }
        }
    
        public class SingalData
        {
            private DateTime time = System.DateTime.Now;
            private string context = string.Empty;
            private DateTime ftime = System.DateTime.Now;
    
            public DateTime Time
            {
                get { return this.time; }
                set { this.time = value; }
            }
    
            public DateTime FTime
            {
                get { return this.ftime; }
                set { this.ftime = value; }
            }
    
            public string Context
            {
                get { return this.context; }
                set { this.context = value; }
            }
        }
    }

         2.对象什么好后只需要调用方法即可:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    using System.Web.Script.Serialization; // 此命名空间对应的框架是 System.Web.Extensions
    
    namespace TestJson
    {
        public class Program
        {
           
            public static void Main(string[] args)
            {
                string jsonStr = new StreamReader("JsonData.txt").ReadToEnd();
                PostalDeliveryModel mode = new JavaScriptSerializer().Deserialize<PostalDeliveryModel>(jsonStr);
                Console.ReadKey();
                
            }
        }
    }

           3.运行监控model对象.数据已经在对象里面了。
        

        4.方法回顾,虽然获取到了。不过这种方法类的Public属性名称必须与Json字符串对应,不知道可否通过在Public属性的上面加上[标签]来映射,这样可以自定义名称,不再需要与Json里面名称一样。求其他大牛在评论的时候指点一下。

     
    Frank.Zhang
    座右铭: 因为没有翅膀,所以要努力奔跑
    简介: 成都90后IT民工,熟悉Vue,.Net,Hybrid开发。对我有兴趣吗? 请点击我
  • 相关阅读:
    SQL2008还原数据库差异备份
    关于串行接口
    SQL Server 2000删除表中的重复记录
    在SQL SERVER 2005创建用户定义函数语法
    C#中的字段与属性
    对SQL数据表和数据库进行迭代操作
    第4章 最简单的C程序设计——顺序程序设计
    走进SQL Server 2005:备份与恢复功能
    ASP.NET中上传下载文件
    Sql常见面试题
  • 原文地址:https://www.cnblogs.com/FourLeafCloverZc/p/3983846.html
Copyright © 2011-2022 走看看