c# json操作


一、json配置

解析json文件,這里我們以litJson為例,首先應安裝litjson

 

二、json簡介(摘自百度百科)

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。 JSON采用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C、C++、C#Java、JavaScript、PerlPython等)。這些特性使JSON成為理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成(一般用於提升網絡傳輸速率)。

JSON 語法規則

JSON 語法是 JavaScript 對象表示語法的子集。
  • 數據在鍵值對中
  • 數據由逗號分隔
  • 花括號保存對象
  • 方括號保存數組

JSON 名稱/值對

JSON 數據的書寫格式是:名稱/值對。
名稱/值對組合中的名稱寫在前面(在雙引號中),值對寫在后面(同樣在雙引號中),中間用冒號隔開:
1
"firstName":"John"
這很容易理解,等價於這條 JavaScript 語句:
1
firstName="John"

JSON 值

JSON 值可以是:
  • 數字(整數或浮點數)
  • 字符串(在雙引號中)
  • 邏輯值(true 或 false)
  • 數組(在方括號中)
  • 對象(在花括號中)
  • null

基礎結構編輯

JSON[1]   結構有兩種結構[2]  
json簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種復雜的結構
1、對象:對象在js中表示為“{}”括起來的內容,數據結構為 {key:value,key:value,...}的鍵值對的結構,在面向對象的語言中,key為對象的屬性,value為對應的屬性值,所以很容易理解,取值方法為 對象.key 獲取屬性值,這個屬性值的類型可以是 數字、字符串、數組、對象幾種。
2、數組:數組在js中是中括號“[]”括起來的內容,數據結構為 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數字、字符串、數組、對象幾種。
經過對象、數組2種結構就可以組合成復雜的數據結構了。
 
三、手寫一個簡單的json文件
 
[
{"id":2,"name":"天下無雙","demage":123},
{"id":3,"name":"絕對零度","demage":200},
{"id":4,"name":"冰封萬里","demage":325}
]

四、解析json文件

 

創建一個對應的Skill類

class Skill
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Demage { get; set; }

        public override string ToString()
        {
            return "Id:" + Id + " Name:" + Name + " Demage:" + Demage;
        }
    }

 

 

解析文件

class Program
    {
        static void Main(string[] args)
        {
            List<Skill> skillList = new List<Skill>();
            //右鍵引用,選擇管理Nuget程序包,搜索litjson安裝
            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("json.txt"));
            foreach (JsonData temp in jsonData)
            {
                Skill skill = new Skill();
                JsonData idValue = temp["id"];
                JsonData nameValue = temp["name"];
                JsonData demageValue = temp["demage"];
                int id = int.Parse(idValue.ToString());
                string name = nameValue.ToString();
                int demage = int.Parse(demageValue.ToString());
                skill.Id = id;
                skill.Name = name;
                skill.Demage = demage;
                skillList.Add(skill);
            }

            foreach (var s in skillList)
            {
                Console.WriteLine(s);
            }
        }
    }

 

五、使用泛型解析Json

注意:Skill類中的屬性名應該和json文件中的鍵名相同

class Skill
    {
        public int id { get; set; }
        public string name { get; set; }
        public int demage { get; set; }

        public override string ToString()
        {
            return "Id:" + id + " Name:" + name + " Demage:" + demage;
        }
    }

 

//使用泛型解析
            Skill[] skillList = JsonMapper.ToObject<Skill[]>(File.ReadAllText("json.txt"));
            foreach (var item in skillList)
            {
                Console.WriteLine(item);
            }

是不是用泛型簡單很多呢?

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM