Json

JSON學習

1.數據在鍵值對中
2.數據有逗號分隔
3.花括號保存對象
4.方括號保存數組

{
"employees": [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName":"Carter" }
]
}

使用JSON時必須要引用Json的庫:litJson

兩種引入JSON的方式
1.JSON官網,下載litJson.dll
2.引用,管理NuGet程序包,搜索litJson

利用JsonMapper解析Json數據

Program.cs

using LitJson2;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PracticeJson
{
    class Program
    {
        static void Main(string[] args)
        {
            List<JsonPractice> jsonInfo = new List<JsonPractice>();
            //1.利用JsonMapper解析Json,Json代表一個數組或者對象
            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("JsonText.txt"));//在這裏JsonData代表數組
            foreach (JsonData item in jsonData)//在這裏JsonData代表一個對象
            {
                JsonPractice json = new JsonPractice();
                JsonData idValue = item["id"];//通過字符索引器取得鍵對應的值
                JsonData danageValue = item["damage"];
                JsonData nameValue = item["name"];
                json.id = Int32.Parse(idValue.ToString());
                json.name = nameValue.ToString();
                json.damage = Int32.Parse(danageValue.ToString());
                //int id = Int32.Parse(idValue.ToString());
                //int damage = Int32.Parse(danageValue.ToString());
                //Console.WriteLine("ID:{0},名字:{1},傷害力:{2}",id,nameValue.ToString(),damage);
                jsonInfo.Add(json);
            }
            foreach (var item in jsonInfo)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
    }
}

JsonText.txt

[
{"id":2,"name":"天下無雙","damage":567},
{"id":3,"name":"咫尺天涯","damage":255},
{"id":4,"name":"如來神掌","damage":356}
]

JsonPractice.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PracticeJson
{
    class JsonPractice
    {
        public int id;
        public string name;
        public int damage;
        public override string ToString()
        {
            return string.Format("ID:{0},名字:{1},傷害:{2}", id, name, damage);
        }
    }
}

使用JsonMapper和泛型解析Json的數組

注意:使用泛型解析時,類中的字段名要和json中的鍵名相

Program.cs

using LitJson2;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PracticeJson
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.利用泛型數組解析Json
            //JsonPractice[] skillArray = JsonMapper.ToObject<JsonPractice[]>(File.ReadAllText("JsonText.txt"));
            //foreach (var item in skillArray)
            //{
            //    Console.WriteLine(item);
            //}
            //2.利用泛型集合解析Json
            List<JsonPractice> skillList = JsonMapper.ToObject<List<JsonPractice>>(File.ReadAllText("JsonText.txt"));
            foreach (var item in skillList)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
    }
}

JsonText.cs同上
JsonPractice.cs同上

使用JsonMapper和泛型解析Json的對象

Program.cs

using LitJson2;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PracticeJson
{
    class Program
    {
        static void Main(string[] args)
        {
            Player player = JsonMapper.ToObject<Player>(File.ReadAllText("主角.txt"));
            Console.WriteLine(player);
            foreach (var item in player.SkillList)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
    }
}

主角.txt

{
  "Name":"zzz",
  "Level":99,
  "Age":18,
  "SkillList":[
{"id":2,"name":"天下無雙","damage":567},
{"id":3,"name":"咫尺天涯","damage":255},
{"id":4,"name":"如來神掌","damage":356}
]
}

Skill.cs負責數組的值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PracticeJson
{
    class Skill
    {
        public int id;
        public string name;
        public int damage;
        public override string ToString()
        {
            return string.Format("ID:{0},名字:{1},傷害:{2}", id, name, damage);
        }
    }
}

Playre.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PracticeJson
{
    class Player
    {
        public string Name { get; set; }
        public int Level { get; set; }
        public int Age { get; set; }
        public List<Skill> SkillList { get; set; }

        public override string ToString()
        {
            return string.Format("Name:{0},Level:{1},Age:{2},SkillList:{3}", Name, Level, Age,SkillList);
        }
    }
}

把對象裝換成文本

Player player = new Player();
player.Name = "花千骨";
player.Level = 78;
player.Age = 23;
string s = JsonMapper.ToJson(player);
Console.WriteLine(s);
Console.ReadKey();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章