Json的解析

JSON(JavaScriptObject Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

用于解析Json的库有很多,这次练习主要是使用的LitJson来解析,在建立项目解析Json之前,我们需要引入LitJson解析库。

右键点击引入->管理NuGet程序包->搜索LitJson,点击安装就自动引入LitJson解析包了。

为了解析Json文件,我们在工程下建立一个txt格式的Json文档,取名为Json技能信息,

内容如下:

[
{"id":1,"name":"天下无双","damage":100},
{"id":2,"name":"龙盘虎踞","damage":100},
{"id":3,"name":"帅坤炮弹","damage":1}
]

这个就是我们这次练习中需要解析的Json文件。

然后建立Skill类,设置Json的字段:

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

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

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

    }

    
}

Json解析的方式也有多种,我们这里介绍两种:

第一种就是常规的解析方法:

通过JsonMapper来打开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)
        {
            //普通的解析方式
            //引入LitJson库
            //List<Skill> skillList = new List<Skill>();
            //JsonData jsondate= JsonMapper.ToObject(File.ReadAllText("Json技能信息.txt"));
            //foreach (JsonData temp in jsondate )
            //{
            //    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());

            //    skill.id = id;
            //    skill.damage = damage;

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

            //foreach (var temp in skillList)
            //{
            //    Console.WriteLine(temp);
            //}
            /////////////////////////////////////////////////////////////////////////
            //泛型解析
            //Skill[] skillArray = JsonMapper.ToObject<Skill[]>(File.ReadAllText("Json技能信息.txt"));
            //foreach (var temp in skillArray)
            //{
            //    Console.WriteLine(temp);
            //}
            /////////////////////////////////////////////////////////////////////////////
          

        }
    }
}

简书地址:http://www.jianshu.com/p/40a2d2cecd3f

posted @ 2017-10-20 21:43  battly  阅读(447)  评论(0编辑  收藏  举报