天天看点

c#(操作json文件)

c#

  • 概:害,又是老懒鬼的笔记,多的操作一个都不计,就简单记下怎么用c#解析json文件,怎么将一个类对象转换成json行了(依旧是基本搬了siki老师的例子)。

操作json文件

  • 首先要导入一手litjson的配置文件,可以自己去官网找dll文件也可以反手在vs的扩展管理器里找相应的组件装上。
  • 先把siki老师写的json例子直接抄过来(老懒鬼了,例子都照抄
[
{"id":2,"name":"天下无双","damage":123},
{"id":3,"name":"天下第一","damage":9999},
{"id":4,"name":"天下无贼","damage":15}
]
           

单步具体操作

  • 调用JsonMapper.ToObject(string s);方法得到该json文件的JsonData对象,参数是文件路径,这个对象到底要怎么用,还是取决于json文件怎么写的
JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("json技能信息.txt"));
//这边这个文件编写的其实是一个技能数组的形式,所以得到的JsonData对象其实是个技能数组
//可以直接foreach进行遍历,来取得其内部每个技能的数据
foreach(JsonData temp in jsonData)
{
	JsonData idValue = temp["id"];   //通过字符串所引起取得键值对的值
	int id = Int32.Parse(idValue.ToString());
	//这边通过ToString方法取得JsonData的字符串数据,然后对其转换得到int数据
}
           

上面演示了如何单个解析Json文件的信息,当然你要是愿意一个信息一个信息的填进一个对象我也没意见,但是像我这种懒鬼,绝对绝对是要用下面这个方法的,太香了

json转对象

  • 直接一手泛型,让它自己对照你指定的类的属性名去找对应的值,然后自己创建对象。依旧对照上面那个例子来写
class Skill
{
	//先定义下技能的类
	//一定要把属性设置为public
	public int id;
	public int damage;
	public string name;
}
Skill[] skills = JsonMapper.ToObject<Skill[]>(File.ReadAllText("json技能信息.txt"));
//这边泛型里给的是Skill类型数组,所以我们直接用Skill的数组来接收结果
//需要注意这种方法json文件里写的键一定要和指定类型的属性命名对应上,不然会出问题
//也可以用如下方法做成list对象
List<Skill> skillList = JsonMapper.ToObject<List<Skill>>(File.ReadAllText("json技能信息.txt"));
           

对象转json

  • 这边使用JsonMapper.ToJson(Object o);方法,把对象作为参数传进去,返回一个字符串,就是编好得json字符串。