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