婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 淺析ASP.NET萬能JSON解析器

淺析ASP.NET萬能JSON解析器

熱門標(biāo)簽:手機地圖標(biāo)注如何刪除 巫師3為什么地圖標(biāo)注的財寶沒有 辦理400電話證件 外呼系統(tǒng)代理品牌 寧波自動外呼系統(tǒng)代理 世紀佳緣地圖標(biāo)注怎么去掉 十堰正規(guī)電銷機器人系統(tǒng) 外呼系統(tǒng)費用一年 怎么給超市做地圖標(biāo)注入駐店

概念介紹
還是先簡單說說Json的一些例子吧。注意,以下概念是我自己定義的,可以參考.net里面的TYPE的模型設(shè)計
如果有爭議,歡迎提出來探討!

1.最簡單:
{"total":0}
total就是值,值是數(shù)值,等于0

2. 復(fù)雜點
{"total":0,"data":{"377149574" : 1}}
total是值,data是對象,這個對象包含了"377149574"這個值,等于1

3. 最復(fù)雜
{"total":0,"data":{"377149574":[{"cid":"377149574"}]}}
total是值,data是對象,377149574是數(shù)組,這個數(shù)組包含了一些列的對象,例如{"cid":"377149574"}這個對象。

有了以上的概念,就可以設(shè)計出通用的json模型了。

萬能JSON源碼:

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace Pixysoft.Json
{
    public class CommonJsonModelAnalyzer
    {
        protected string _GetKey(string rawjson)
        {
            if (string.IsNullOrEmpty(rawjson))
                return rawjson;
            rawjson = rawjson.Trim();
            string[] jsons = rawjson.Split(new char[] { ':' });
            if (jsons.Length 2)
                return rawjson;
            return jsons[0].Replace("\"", "").Trim();
        }
        protected string _GetValue(string rawjson)
        {
            if (string.IsNullOrEmpty(rawjson))
                return rawjson;
            rawjson = rawjson.Trim();
            string[] jsons = rawjson.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
            if (jsons.Length 2)
                return rawjson;
            StringBuilder builder = new StringBuilder();
            for (int i = 1; i jsons.Length; i++)
            {
                builder.Append(jsons[i]);
                builder.Append(":");
            }
            if (builder.Length > 0)
                builder.Remove(builder.Length - 1, 1);
            string value = builder.ToString();
            if (value.StartsWith("\""))
                value = value.Substring(1);
            if (value.EndsWith("\""))
                value = value.Substring(0, value.Length - 1);
            return value;
        }
        protected Liststring> _GetCollection(string rawjson)
        {
            //[{},{}]
            Liststring> list = new Liststring>();
            if (string.IsNullOrEmpty(rawjson))
                return list;
            rawjson = rawjson.Trim();
            StringBuilder builder = new StringBuilder();
            int nestlevel = -1;
            int mnestlevel = -1;
            for (int i = 0; i rawjson.Length; i++)
            {
                if (i == 0)
                    continue;
                else if (i == rawjson.Length - 1)
                    continue;
                char jsonchar = rawjson[i];
                if (jsonchar == '{')
                {
                    nestlevel++;
                }
                if (jsonchar == '}')
                {
                    nestlevel--;
                }
                if (jsonchar == '[')
                {
                    mnestlevel++;
                }
                if (jsonchar == ']')
                {
                    mnestlevel--;
                }
                if (jsonchar == ',' nestlevel == -1 mnestlevel == -1)
                {
                    list.Add(builder.ToString());
                    builder = new StringBuilder();
                }
                else
                {
                    builder.Append(jsonchar);
                }
            }
            if (builder.Length > 0)
                list.Add(builder.ToString());
            return list;
        }
    }
}

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace Pixysoft.Json
{
    public class CommonJsonModel : CommonJsonModelAnalyzer
    {
        private string rawjson;
        private bool isValue = false;
        private bool isModel = false;
        private bool isCollection = false;
        internal CommonJsonModel(string rawjson)
        {
            this.rawjson = rawjson;
            if (string.IsNullOrEmpty(rawjson))
                throw new Exception("missing rawjson");
            rawjson = rawjson.Trim();
            if (rawjson.StartsWith("{"))
            {
                isModel = true;
            }
            else if (rawjson.StartsWith("["))
            {
                isCollection = true;
            }
            else
            {
                isValue = true;
            }
        }
        public string Rawjson
        {
            get { return rawjson; }
        }
        public bool IsValue()
        {
            return isValue;
        }
        public bool IsValue(string key)
        {
            if (!isModel)
                return false;
            if (string.IsNullOrEmpty(key))
                return false;
            foreach (string subjson in base._GetCollection(this.rawjson))
            {
                CommonJsonModel model = new CommonJsonModel(subjson);
                if (!model.IsValue())
                    continue;
                if (model.Key == key)
                {
                    CommonJsonModel submodel = new CommonJsonModel(model.Value);
                    return submodel.IsValue();
                }
            }
            return false;
        }
        public bool IsModel()
        {
            return isModel;
        }
        public bool IsModel(string key)
        {
            if (!isModel)
                return false;
            if (string.IsNullOrEmpty(key))
                return false;
            foreach (string subjson in base._GetCollection(this.rawjson))
            {
                CommonJsonModel model = new CommonJsonModel(subjson);
                if (!model.IsValue())
                    continue;
                if (model.Key == key)
                {
                    CommonJsonModel submodel = new CommonJsonModel(model.Value);
                    return submodel.IsModel();
                }
            }
            return false;
        }
        public bool IsCollection()
        {
            return isCollection;
        }
        public bool IsCollection(string key)
        {
            if (!isModel)
                return false;
            if (string.IsNullOrEmpty(key))
                return false;
            foreach (string subjson in base._GetCollection(this.rawjson))
            {
                CommonJsonModel model = new CommonJsonModel(subjson);
                if (!model.IsValue())
                    continue;
                if (model.Key == key)
                {
                    CommonJsonModel submodel = new CommonJsonModel(model.Value);
                    return submodel.IsCollection();
                }
            }
            return false;
        }

        /// summary>
        /// 當(dāng)模型是對象,返回擁有的key
        /// /summary>
        /// returns>/returns>
        public Liststring> GetKeys()
        {
            if (!isModel)
                return null;
            Liststring> list = new Liststring>();
            foreach (string subjson in base._GetCollection(this.rawjson))
            {
                string key = new CommonJsonModel(subjson).Key;
                if (!string.IsNullOrEmpty(key))
                    list.Add(key);
            }
            return list;
        }
        /// summary>
        /// 當(dāng)模型是對象,key對應(yīng)是值,則返回key對應(yīng)的值
        /// /summary>
        /// param name="key">/param>
        /// returns>/returns>
        public string GetValue(string key)
        {
            if (!isModel)
                return null;
            if (string.IsNullOrEmpty(key))
                return null;
            foreach (string subjson in base._GetCollection(this.rawjson))
            {
                CommonJsonModel model = new CommonJsonModel(subjson);
                if (!model.IsValue())
                    continue;
                if (model.Key == key)
                    return model.Value;
            }
            return null;
        }
        /// summary>
        /// 模型是對象,key對應(yīng)是對象,返回key對應(yīng)的對象
        /// /summary>
        /// param name="key">/param>
        /// returns>/returns>
        public CommonJsonModel GetModel(string key)
        {
            if (!isModel)
                return null;
            if (string.IsNullOrEmpty(key))
                return null;
            foreach (string subjson in base._GetCollection(this.rawjson))
            {
                CommonJsonModel model = new CommonJsonModel(subjson);
                if (!model.IsValue())
                    continue;
                if (model.Key == key)
                {
                    CommonJsonModel submodel = new CommonJsonModel(model.Value);
                    if (!submodel.IsModel())
                        return null;
                    else
                        return submodel;
                }
            }
            return null;
        }
        /// summary>
        /// 模型是對象,key對應(yīng)是集合,返回集合
        /// /summary>
        /// param name="key">/param>
        /// returns>/returns>
        public CommonJsonModel GetCollection(string key)
        {
            if (!isModel)
                return null;
            if (string.IsNullOrEmpty(key))
                return null;
            foreach (string subjson in base._GetCollection(this.rawjson))
            {
                CommonJsonModel model = new CommonJsonModel(subjson);
                if (!model.IsValue())
                    continue;
                if (model.Key == key)
                {
                    CommonJsonModel submodel = new CommonJsonModel(model.Value);
                    if (!submodel.IsCollection())
                        return null;
                    else
                        return submodel;
                }
            }
            return null;
        }
        /// summary>
        /// 模型是集合,返回自身
        /// /summary>
        /// returns>/returns>
        public ListCommonJsonModel> GetCollection()
        {
            ListCommonJsonModel> list = new ListCommonJsonModel>();
            if (IsValue())
                return list;
            foreach (string subjson in base._GetCollection(rawjson))
            {
                list.Add(new CommonJsonModel(subjson));
            }
            return list;
        }
 

        /// summary>
        /// 當(dāng)模型是值對象,返回key
        /// /summary>
        private string Key
        {
            get
            {
                if (IsValue())
                    return base._GetKey(rawjson);
                return null;
            }
        }
        /// summary>
        /// 當(dāng)模型是值對象,返回value
        /// /summary>
        private string Value
        {
            get
            {
                if (!IsValue())
                    return null;
                return base._GetValue(rawjson);
            }
        }
    }
}


使用方法

public CommonJsonModel DeSerialize(string json)
{
 return new CommonJsonModel(json);
}

超級簡單,只要new一個通用對象,把json字符串放進去就行了。

針對上文的3個例子,我給出3種使用方法:

{"total":0}
CommonJsonModel model = DeSerialize(json);
model.GetValue("total") // return 0
{"total":0,"data":{"377149574" : 1}}
CommonJsonModel model = DeSerialize(json);
model.GetModel("data").GetValue("377149574") //return 1
{"total":0,"data":{"377149574":[{"cid":"377149574"}]}}
CommonJsonModel model = DeSerialize(json);
model.GetCollection("377149574").GetCollection()[0].GetValue("cid") //return 377149574

這個有點點復(fù)雜,

1. 首先377149574代表了一個集合,所以要用model.GetCollection("377149574")把這個集合取出來。

2. 其次這個集合里面包含了很多對象,因此用GetColllection()把這些對象取出來

3. 在這些對象List里面取第一個[0],表示取了":{"cid":"377149574"}這個對象,然后再用GetValue("cid")把對象的值取出來。

您可能感興趣的文章:
  • asp.net(C#)解析Json的類代碼
  • asp.net中各種類型的JSON格式化
  • asp.net MVC下使用rest的方法
  • .Net整合Json實現(xiàn)REST服務(wù)客戶端的方法詳解

標(biāo)簽:泰州 山西 牡丹江 通遼 景德鎮(zhèn) 嘉興 天門

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺析ASP.NET萬能JSON解析器》,本文關(guān)鍵詞  淺析,ASP.NET,萬能,JSON,解析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺析ASP.NET萬能JSON解析器》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺析ASP.NET萬能JSON解析器的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩av中文在线观看| 国内精品久久久久影院薰衣草| 日韩高清不卡在线| 久久视频一区二区| 色噜噜狠狠色综合中国| 亚洲第一福利一区| 精品久久久三级丝袜| 国产亚洲综合在线| 精品一区二区在线播放| 91精品黄色片免费大全| 国产尤物一区二区| 中文av一区特黄| 色噜噜狠狠成人网p站| 丝袜亚洲另类欧美| 99久久精品99国产精品| 国产精品久久久久久户外露出 | 丝袜美腿亚洲综合| 欧美在线观看18| 日韩av电影天堂| ww久久中文字幕| 99精品欧美一区二区三区综合在线| 亚洲免费色视频| 欧美va在线播放| av午夜一区麻豆| 日韩av一区二区在线影视| 色国产精品一区在线观看| 日韩激情一区二区| 国产欧美一区二区精品忘忧草| 色悠久久久久综合欧美99| 成人黄色免费短视频| 激情欧美一区二区| 日韩不卡手机在线v区| 国产午夜三级一区二区三| 欧美日韩视频在线第一区| 久久精品国产色蜜蜜麻豆| 国产精品久久久久久亚洲毛片| 欧美日韩一级黄| 丰满白嫩尤物一区二区| 免费av网站大全久久| 亚洲综合免费观看高清完整版| 欧美影视一区二区三区| 日本特黄久久久高潮| 亚洲永久精品国产| 精品国产伦理网| 精品久久人人做人人爱| 91亚洲精品乱码久久久久久蜜桃| 亚洲午夜久久久久| 亚洲精品网站在线观看| 日韩伦理av电影| 国产精品久久看| 日韩一级黄色大片| 制服丝袜日韩国产| 日韩三区在线观看| 日韩一区二区视频在线观看| 色综合欧美在线| 欧洲精品在线观看| 69成人精品免费视频| 国产精品你懂的在线| 欧美伦理电影网| 欧美日韩成人在线| 色综合视频一区二区三区高清| 成人国产精品视频| 99国产欧美久久久精品| 一本色道久久综合亚洲精品按摩| 91成人在线免费观看| 欧美久久高跟鞋激| 日韩精品一区在线| 国产欧美一区二区精品婷婷| 国产人久久人人人人爽| 精品国产亚洲一区二区三区在线观看| 国产色产综合产在线视频| 99久久国产综合色|国产精品| 欧美中文一区二区三区| 欧美一区中文字幕| 亚洲情趣在线观看| 久久99国产精品久久| 99精品国产视频| 99在线精品视频| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩精品一区二区三区四区 | aa级大片欧美| 欧美亚洲禁片免费| 国产精品成人一区二区艾草| 日本亚洲电影天堂| 欧美日韩大陆一区二区| 日本一区二区三区电影| 美女视频黄频大全不卡视频在线播放| 欧美影院精品一区| 夜夜精品视频一区二区| 欧美性色欧美a在线播放| 亚洲成人午夜影院| 欧美麻豆精品久久久久久| 热久久一区二区| 678五月天丁香亚洲综合网| 成人免费精品视频| 免费黄网站欧美| 日韩精品亚洲专区| 亚洲蜜桃精久久久久久久| 国产精品国产精品国产专区不蜜 | 国产福利精品导航| 亚洲精品视频在线看| 中文字幕成人网| 亚洲自拍偷拍九九九| 日韩一区二区三区视频| 成人综合婷婷国产精品久久蜜臀 | 亚洲成人黄色小说| 久久精品国产秦先生| 在线精品亚洲一区二区不卡| 国产精品三级视频| 99精品国产视频| 亚洲va欧美va人人爽午夜| 日韩av中文字幕一区二区| 99久久国产综合精品麻豆| 欧美精品一区二区三区一线天视频 | 国产精品麻豆久久久| 国产美女在线精品| 欧美成人一区二区三区| 亚洲123区在线观看| 91精品国产手机| 丁香婷婷深情五月亚洲| 亚洲综合在线免费观看| 欧美一区二区三区在线观看 | 亚洲成人久久影院| 国产精品美女视频| 在线影院国内精品| 美女mm1313爽爽久久久蜜臀| 色爱区综合激月婷婷| 另类小说一区二区三区| 国产精品黄色在线观看| 欧美日韩色综合| 国产精品1区2区3区| 亚洲精品日日夜夜| 精品国产91乱码一区二区三区 | 极品美女销魂一区二区三区免费| 国产精品情趣视频| 91精品国产一区二区三区蜜臀 | 欧美久久久久久蜜桃| 国内不卡的二区三区中文字幕| 在线播放中文字幕一区| 99精品热视频| 国产高清不卡一区二区| 久久丁香综合五月国产三级网站 | 午夜精品一区二区三区免费视频 | 激情伊人五月天久久综合| 亚洲一区二区三区四区在线免费观看 | 久久亚洲欧美国产精品乐播| 欧美一区欧美二区| 日日摸夜夜添夜夜添亚洲女人| 国产丝袜在线精品| 精品毛片乱码1区2区3区| 欧美精品一卡二卡| 欧美日韩一区二区三区四区| 91理论电影在线观看| 99麻豆久久久国产精品免费优播| 精品一区中文字幕| 久久超碰97中文字幕| 午夜欧美视频在线观看| 香蕉av福利精品导航| 亚洲在线观看免费视频| 亚洲一区在线观看网站| 一区二区三区不卡视频 | 日韩理论电影院| 亚洲色图在线看| 亚洲第一成人在线| 亚洲精品日韩一| 亚洲一区二区三区自拍| 丝袜诱惑制服诱惑色一区在线观看 | 99精品偷自拍| 欧美精品一区二区三区久久久 | 国产欧美一区二区三区鸳鸯浴| 亚洲免费在线视频| 成人小视频免费观看| 日韩一区二区精品葵司在线 | 欧美三级欧美一级| 亚洲天堂免费看| 国产综合成人久久大片91| 欧美三级在线播放| **网站欧美大片在线观看| 久久精品国产亚洲高清剧情介绍 | 91精品国产综合久久久久久久久久| 2020国产精品自拍| 精品一区二区三区香蕉蜜桃 | 国产成人av电影在线播放| 日韩一级片在线播放| 一区二区三区四区高清精品免费观看| 国产在线国偷精品产拍免费yy| 精品视频色一区| 亚洲精选视频免费看| 91一区二区三区在线播放| 欧美精彩视频一区二区三区| 国产精品一区二区在线播放| 精品欧美一区二区久久| 婷婷中文字幕综合| 欧美日韩电影一区| 视频精品一区二区| 日韩限制级电影在线观看| 免费观看91视频大全| 日韩亚洲欧美在线观看| 国产99精品视频| 中文字幕av不卡|