Json文件的解析

来源:互联网 发布:阿里云 outllok 编辑:程序博客网 时间:2024/06/01 07:47

1.首先自定义一个Json文件

[
  {
    "Id": 3,
    "Name": "天下无贼",
    "Damage": 123
  },
  {
    "Id": 4,
    "Name": "空格",
    "Damage": 150
  },
  {
    "Id": 5,
    "Name": "流星",
    "Damage": 200
  }
]

2.再自定义一个类

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


namespace MyJson
{
    class Skill
    {
        public int Id;
        public string Name;
        public int Damage;
        public override string ToString()
        {
            return string.Format("id:{0}  name:{1}   damage{2}",Id,Name,Damage);
        }
    }
}

3.开始解析Json文件的三种方法(原理其实都差不多)


(第一种):

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


namespace MyJson
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Skill> skillList = new List<Skill>();


            JsonData jsonDataArray = JsonMapper.ToObject(File.ReadAllText("MyJson.txt"));//J加载文本文件
            foreach (JsonData temp in jsonDataArray)
            {
                Skill skill = new Skill();
                JsonData idValue = temp["Id"];
                JsonData nameValue = temp["Name"];
                JsonData damageValue = temp["Damage"];
                int id = int.Parse(idValue.ToString());//将Json类型强制转换成int类型
                skill.Id = id;
                skill.Name = nameValue.ToString();
                int damage = int.Parse(damageValue.ToString());
                skill.Damage = damage;
                skillList.Add(skill);//分别加载到List集合里面
            }
            foreach (Skill item in skillList)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
            
        }
    }
}

(第二种)://利用JsonMapper中的泛型进行解析

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


namespace MyJson
{
    class Program
    {
        static void Main(string[] args)
        {
            
            Skill[] skill = JsonMapper.ToObject<Skill[]>(File.ReadAllText("MyJson.txt"));//Json中的键的名称必须跟自定义的类中的名称一致
            foreach (Skill item in skill)
            {
                Console.WriteLine(item);
            }


        }
    }
}

(第三种):同样我们也可以将泛型中的数组换成集合

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


namespace MyJson
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Skill> skillList = JsonMapper.ToObject<List<Skill>>(File.ReadAllText("MyJson.txt"));//将数组改成集合对Json文本文件进行解析
            foreach (Skill item in skillList)
            {
                Console.WriteLine(item);
            }


        }
    }
}

原创粉丝点击