.Net库处理JSON (JavaScript对象表示法)字符串之间的转换。LitJSON是用c#编写的,它的目标是小巧、快速和易于使用。它快速而精简,没有外部依赖。只有几个类,可以很容易地嵌入到您自己的代码中,或者是一个非常小的程序集,可以随代码一起发布。代码是高度可移植的,这通常使得它很容易适应新的平台。
下面可以看一下下面的这些例子就可以快速上手了。
例子
第一种
{
"Name":"apple","Price":18
}
JsonData jd = new JsonData();
jd["Name"] = "apple";
jd["Price"] = 18;
string jsonData = JsonMapper.ToJson(jd);
Console.WriteLine(jsonData);
或者用JsonWrite
StringBuilder sb = new StringBuilder();
JsonWriter jw = new JsonWriter(sb);
jw.WriteObjectStart();
jw.WritePropertyName("Name");
jw.Write("apple");
jw.WritePropertyName("Price");
jw.Write("18");
jw.WriteObjectEnd();
Console.WriteLine(sb.ToString());
第二种
{
"Fruits":{
"Name":"apple","Price":18
},"Meat":{
"Name":"beef","Price":45
}
}
JsonData jd = new JsonData();
jd["Fruits"] = new JsonData();
jd["Fruits"]["Name"] = "apple";
jd["Fruits"]["Price"] = 18;
jd["Meat"] = new JsonData();
jd["Meat"]["Name"] = "beef";
jd["Meat"]["Price"] = 45;
string jsonData = JsonMapper.ToJson(jd);
Console.WriteLine(jsonData);
第三种
{
"AllRole": [
{
"zhangsan": {
"Weapon": ["daozi","chazi","qiang"],"HP": 25,"MoveSpeed": 10
}
},{
"lisi": {
"Weapon": ["daozi","MoveSpeed": 10
}
}
]
}
JsonData jd = new JsonData();
JsonData jd2 = new JsonData();
jd2.SetJsonType(JsonType.Array);
jd["AllRole"] = jd2;
jd2.Add(CreateRole("zhangsan"));
jd2.Add(CreateRole("lisi"));
string jsonData = JsonMapper.ToJson(jd);
Console.WriteLine(jsonData);
JsonData CreateRole(string name)
{
JsonData role1 = new JsonData();
JsonData info = new JsonData();
info.SetJsonType(JsonType.Array);
role1[name] = new JsonData();
JsonData weaponInfo = new JsonData();
weaponInfo.SetJsonType(JsonType.Array);
weaponInfo.Add("daozi");
weaponInfo.Add("chazi");
weaponInfo.Add("qiang");
role1[name]["Weapon"] = weaponInfo;
role1[name]["HP"] = 25;
role1[name]["MoveSpeed"] = 10;
return role1;
}
第四种
[
{
"Name":"apple","Price":18
},{
"Name":"pear","Price":25
}
]
JsonData jd = new JsonData();
jd.SetJsonType(JsonType.Array);
JsonData jd2 = new JsonData();
jd2["Name"] = "apple";
jd2["Price"] = 18;
JsonData jd3 = new JsonData();
jd3["Name"] = "pear";
jd3["Price"] = 25;
jd.Add(jd2);
jd.Add(jd3);
string jsonData1 = JsonMapper.ToJson(jd);
Console.WriteLine(jsonData1);
JsonData和JsonWrite
在JsonData中当实例化后是默认合集的=>{},是否通过SetJsonType就可以更改JsonData的类型,在JsonType中共有Object,Array,String,Int,Long,Double,Boolean类型,当选着到Array的时候JsonData就会更改为数组类型。
当我们默认直接使用的时候:
当我们设置为其他的时候发现原来的写法就会失效:
因为我们是Array类型了,所以得使用Add才可以往里面添加东西:
包括往数组添加集合,往集合添加数组都是可以得,可以上到上方几个例子。
在JsonWrite中就没有那么多得讲究,
writer.WriteArrayStart(); => [
writer.WriteObjectStart(); => {
writer.WriteObjectEnd(); => }
writer.WriteArrayEnd(); => ]
使用WriteArrayStart()和WriteArrayEnd()的:
使用WriteObjectStart()和WriteObjectEnd()的:
以及嵌套使用的:
LisJson和C#类的使用
类转Json
首先创建一个Weapon类以及装Weapon的Weapons类
public class Weapon
{
private string id;
public string ID { get => id; set => id = value; }
private string name;
public string Name { get => name; set => name = value; }
private string damage;
public string Damage { get => damage; set => damage = value; }
public Weapon()
{ }
}
public class Weapons
{
public List<Weapon> weapons;
}
实例化两个Weapon以及实例化Weapons,并且将Wepaon添加到Weapon的List里面,最后使用JsonMapper将Weapons.weapons转成Json并且控制台输出。
Weapons weapons = new Weapons();
Weapon weapon1 = new Weapon
{
ID = "00001",Name = "daozi",Damage = "100"
};
Weapon weapon2 = new Weapon
{
ID = "00002",Name = "cha",Damage = "200"
};
weapons.weapons = new List<Weapon>
{
weapon1,weapon2
};
Console.WriteLine(JsonMapper.ToJson(weapons.weapons));
Json转类
实例化Weapons,以及实例化Weapons.weapons,然后用StreamReader读取Json文件,然后使用JsonMapper.ToObject将Json转换成类。
Weapons weapons = new Weapons();
//实例化List
weapons.weapons = new List<Weapon>();
//读取Json文件
StreamReader sr = new StreamReader("C:\\Users\\admin\\Desktop\\testJson.json");
string json = sr.ReadToEnd();
//将转换出来的结果存在List里面
weapons.weapons = JsonMapper.ToObject<List<Weapon>>(json);
//读取Weapons里面的第一个Weapon
Weapon weapon = weapons.weapons[0];
Console.WriteLine(weapon.ID);
Console.WriteLine(weapon.Name);
Console.WriteLine(weapon.Damage);
可以看见我们也读取到Json里面的数据了。
注意:在转换的时候公开的属性要和Json文件内的一致,以及[] 代表List,{}代表一个类。
原文地址:https://blog.csdn.net/a123667/article/details/135300818
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。