Json解析

1.Json操作

    此次操作用到了"Json技能信息.txt",保存技能信息,和一个对应的Skill类。

1.1 Json技能信息

[
{"id":2,"name":"天下无双","damage":133},
{"id":2,"name":"天下无贼","damage":34},
{"id":2,"name":"咫尺天涯","damage":56}
]

1.2 Skill类

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

namespace _333_JsonMapper和范型解析
{
    class Skill
    {
        public int id;
        public int damage;
        public string name;

        public override string ToString()
        {
            return string.Format("Id:{0}, damage:{1},Name:{2}", id, damage, name);
        }
    }
}

1.3 Program.CS

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

namespace _332_json操作
{
    /// <summary>
    /// 使用litjson进行解析json文本
    /// 两种引入json方法:
    /// 1.litjson网站下载litjson,然后添加引用,找到dll所在目录
    /// 2.右键引用,打开netget程序包,在联机里搜索litjson,点击安装
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            List<Skill> skillList = new List<Skill>();
            //使用jsonMapper去解析一个json文本
            //jsondata代表一个数据或者一个对象
            //在这里JsonData代表一个数组
            JsonData jsonData= JsonMapper.ToObject(File.ReadAllText("Json技能信息.txt"));
            foreach(JsonData temp in jsonData)//在这里temp代表一个对象
            {
                Skill skill = new Skill();

                JsonData idvalue = temp["id"];//通过字符串索引器可以取得键值对的值
                JsonData nameValue = temp["name"];
                JsonData damageValue = temp["damage"];

                int id = Int32.Parse(idvalue.ToString());
                int damage = Int32.Parse(damageValue.ToString());

                //Console.WriteLine(id + ":" + nameValue.ToString() + ":" + damage);

                skill.id = id;
                skill.damage = damage;
                skill.name = nameValue.ToString();
                skillList.Add(skill);
            }

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

2. JsonMapper和范型

    用到了“主角信息.txt”和一个skill类,一个Player类。

2.1 主角信息

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

2.2 Json技能信息

[
{"id":2,"name":"天下无双","damage":133},
{"id":2,"name":"天下无贼","damage":34},
{"id":2,"name":"咫尺天涯","damage":56}
]

2.3 Skill类

namespace _333_JsonMapper和范型解析
{
    class Skill
    {
        public int id;
        public int damage;
        public string name;

        public override string ToString()
        {
            return string.Format("Id:{0}, damage:{1},Name:{2}", id, damage, name);
        }
    }
}

2.4 Player类

    class Player
    {
        //public string name;//字段或者属性名要跟json里对应
        //public int level;

        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);
        }

    }

2.5 Program.CS

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

namespace _333_JsonMapper和范型解析
{
    class Program
    {
        /// <summary>
        ///使用范型解析json
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //json里面对象的键必须跟定义的类里面的字段或者属性保持一致
            /****第一种****************************
            Skill[] skillArray= JsonMapper.ToObject<Skill[]>(File.ReadAllText("Json技能信息.txt"));

            foreach(var temp in skillArray)
            {
                Console.WriteLine(temp);
            }
            *****************************/

            /*****第二种****************
            List<Skill> skillList= JsonMapper.ToObject<List<Skill>>(File.ReadAllText("Json技能信息.txt"));
            
            foreach(var temp in skillList)
            {
                Console.WriteLine(temp);
            }
            **************************/

            /****第三种(用Player类)*******/
            Player p = JsonMapper.ToObject<Player>(File.ReadAllText("主角信息.txt"));

            Console.WriteLine(p);

            foreach (var temp in p.SkillList)
            {
                Console.WriteLine(temp);
            }
            /*************************/
            /****保存为json*************
            Player p = new Player();
            p.Name = "花千骨";
            p.Age = 16;
            p.Level = 99;
            string json = JsonMapper.ToJson(p);
            Console.WriteLine(json);
            ***********************/
            Console.ReadKey();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

王大匣

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

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

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

打赏作者

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

抵扣说明:

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

余额充值