大家好,欢迎来到IT知识分享网。
.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", "chazi", "qiang"], "HP": 25, "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中就没有那么多得讲究,
使用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://haidsoft.com/110273.html









