zoukankan      html  css  js  c++  java
  • C#使用litJson解析Json(一)

    目录

    • 使用的第三方库
    • 添加的引用
    • 适用场景
    • 举例说明
    • 小结

    阐述

    • litJson作为优秀的第三方库,是解析Json很好的工具。

    • 使用的第三方库

     添加引用 litJson,如下两个引用可直接添加System.ServiceModel.Web,System.Runtime.Serialization
    
    • 添加using指令集
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Json;
    using LitJson;
    

    适用情景

    • 解析Json字符串
    • 解析本地Json文件
    • 解析Json接口Api,解析带签名的Json接口

    举例子说明

    • 解析Json接口,带签名的Json接口

    • 首先Json字符串内容如下,是接口url的内容。大致可以看到,字典里面嵌套着字典,我们可以先取library中的字典,再取字典中的Key和Value值。

    • 解析固定格式的Json,还有读取本地Json文件,都很类似。

    {
    	"library": [{
    		"materialManufacturer": "11",
    		"regularLabelling": "",
    		"sheetLabelling": ""
    	}, {
    		"materialManufacturer": "fqwfewq",
    		"regularLabelling": "",
    		"sheetLabelling": ""
    	}]
    }
    
    • 先定义两个类
           //一个材料信息,包含如下成员
            public class MaterialItem
            {
                public static List<MaterialItem> materialList = new List<MaterialItem>();
                public string materialManufacturer { get; set; }
                public string regularLabelling { get; set; }
                public string sheetLabelling { get; set; }
            }
            //材料类
            public class Material
            {
                public Material()
                {
                    MaterialItem = new MaterialItem();
                }
                public string matrail { get; set; }
                public MaterialItem MaterialItem { get; set; }
            }
    
    • 方法的调用,这边的参数一般都是写成活的,写法可灵活变更
            /// <summary>
            /// 主方法
            /// </summary>
            /// <param name="args"></param>
            public static void Main(string[] args)
            {
    
                //接口url
                string url = " http://192.168.42.46/Windchill/servlet/Navigation/MaterialLibraryServlet ";
                //签名
                string restName = "Authorization";
                //认证
                string restValue = "Basic d2NhZG1pbjp3Y2FkbWlu";
                //传入参数,读取Json字符串
                GetJsonData(url, restName, restValue);
            }
    
    • 解析Json的方法封装,逻辑也是比较清晰,GET请求,请求头的添加,获取数据流文件,再父级Key下的字典,再从字典中取键值对。最后添加到list集合中,搞定数据解析。如何利用lis结合要结合具体的业务场景。
            /// <summary>
            /// Json解析的方法封装
            /// </summary>
            /// <param name="tmpUrlI">传入的接口Url</param>
            /// <param name="tmpKeyName">签名</param>
            /// <param name="tmpKeyValue">认证</param>
            public static void GetJsonData(string tmpUrlI, string tmpKeyName, string tmpKeyValue)
            {
                //获取请求
                HttpWebRequest request = WebRequest.Create(tmpUrlI) as HttpWebRequest;
                //加入请求头
                request.Headers.Add(tmpKeyName, tmpKeyValue);
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    //获取响应数据流
                    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                    //获得json字符串
                    string jsonstr = reader.ReadLine();
                    JsonData jsonData = JsonMapper.ToObject(jsonstr);
                    if (jsonData != null)
                    {
                        //取library下键值字典
                        JsonData jsonDicList = jsonData["library"];
                        foreach (JsonData item in jsonDicList)
                        {
                            MaterialItem JO = new MaterialItem();
                            JO.materialManufacturer = item["materialManufacturer"].ToString();
                            JO.regularLabelling = item["regularLabelling"].ToString();
                            JO.sheetLabelling = item["sheetLabelling"].ToString();
                            MaterialItem.materialList.Add(JO);
                        }
                    }
                }
            }
    

    小结

    • Json是数据与数据之间进行交互,很快捷的方式之一。
    • 随着互联网产业的发展。手机应用,网站建设,Json更是成为开发者,必不可少的技能之一。
    • get,post请求,待参数的Json,以后都会详情介绍。

    感激

    星星之火可以燎原,今日点滴的付出,是日后的苦尽甘来。莫愁前路漫漫,天下谁人不识君。感谢你阅读此文稿,也希望你能不吝赐教。推荐比较全面的个人学习网站,希望对你有帮助。

    关于作者

      var normalChild = {
        nickName  : "墨客码",
        site : "http://www.cnblogs.com/gss0525/"
        descTarget : ".net后台开发者,热衷分享技术,心怀感恩,深耕不缀。"
      }
    
    读万卷书,行万里路,方能回到内心深处。
  • 相关阅读:
    [BZOJ1013][JSOI2008]球形空间产生器sphere 高斯消元
    [Luogu1848][USACO12OPEN]书架Bookshelf DP+set+决策单调性
    [BZOJ1025][SCOI2009]游戏 DP+置换群
    [BZOJ1024][SCOI2009]生日快乐 搜索
    [BZOJ2002][Hnoi2010]Bounce弹飞绵羊 LCT
    「BZOJ 4565」「HAOI 2016」字符合并「区间状压DP」
    「BZOJ 5161」最长上升子序列「状压DP」
    「SPOJ TTM 」To the moon「标记永久化」
    「学习笔记」字符串大礼包
    「CF724G」Xor-matic Number of the Graph「线性基」
  • 原文地址:https://www.cnblogs.com/gss0525/p/10209715.html
Copyright © 2011-2022 走看看