Csharp Json解析

新建工程 Json解析 :


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

namespace Json解析
{
    class Program
    {
        static void Main(string[] args)
        {

            List<Skill> skilllist = new List<Skill>();

            #region MyRegion
            使用litjson进行解析json文本
            两种引入litjson的方法
            1,去官网下载 然后添加引用json  2,在 引用右键单击 管理NuGet程序包 下载

            我们使用jsonMapper去解析json文本
            jsondata对象代表一个数组或者一个对象
            在这里jsonData 代表数组
            //JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("json技能信息.json"));




            //foreach (JsonData temp in jsonData) //temp 代表一个对象
            //{
            //    JsonData idValue = temp["id"];// 通过字符串所引器可以取得键值对
            //    JsonData nameValue = temp["name"];// 通过字符串所引器可以取得键值对
            //    JsonData damaageValue = temp["damage"];// 通过字符串所引器可以取得键值对

            //    int id = Int32.Parse(idValue.ToString());
            //    int damage = Int32.Parse(damaageValue.ToString());


            //    Skill skill = new Skill();
            //    skill.id = id;
            //    skill.damage = damage;
            //    skill.name = nameValue.ToString();
            //    skilllist.Add(skill);


            //}

            //foreach (var item in skilllist)
            //{
            //    Console.WriteLine(item);
            //}

            //Console.ReadKey(); 
            #endregion
            //使用泛型 去解析json 
            //json里面对象的键必须跟定义类型里面的字段或者属性对应要与Skill类中的值对应上保持一致
            Skill[]  skillArray =    JsonMapper.ToObject<Skill[]>(File.ReadAllText("json技能信息.json"));

            foreach (Skill  item in skillArray)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();

        }
    }
}

新建 json文件  改为较心则复制
[
{"id":2,"name":"天下无双","damage":123},
{"id":3,"name":"天下无贼","damage":133},
{"id":4,"name":"咫尺天涯","damage":124}
]


 新建一个 Skill类 

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

namespace Json解析
{
    class Skill
    {
        public int id;
        public string name;
        public int damage;


        public override string ToString()
        {
            return string.Format(id + " " + name+" "+ damage);
        }

    }
}

以上 就解析成功

新建一个角色信息类 角色信息.json 较新则复制

    
     {
      "Name": "Shiki",
      "Level": 99,
      "Age":18
        "SkillList": [
{"id":2,"name":"天下无双","damage":123},
{"id":3,"name":"天下无贼","damage":133},
{"id": 4,"name": "咫尺天涯",damage":133}} ]
    }


Player 角色类

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


namespace Json解析
{
    class Player
    {
        public string Name{ get; set; } //字段要跟属性名 要跟json里面的对应
        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},lerve:{1},Age:{2},SkillList:{3}",Name,Level ,Age,SkillList);
        }
    }
}

            //利用 Player解析角色信息类 
            Player p =  JsonMapper.ToObject<Player>(File.ReadAllText("主角信息.json"));
            Console.WriteLine(p);
            foreach (var item in p.SkillList)
            {
                Console.WriteLine(item);
            }


            //Player p = new Player(); 利用角色类转换成json
            //p.Name = "花千骨";
            //p.Level = 2;
            //p.Age = 22;
            //string jiso = JsonMapper.ToJson(p);
            //Console.WriteLine(jiso);


            Console.ReadKey();






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值