//写入json文档
注意事项:
1、在Asset下要有一个StreamingAssets文件夹
2、在文件夹内,有一个已创建好的json空文档
3、引入命名空间 using Litjson; using System; using System.IO;
4、创建英雄和技能类
Demo所需要的命名空间:
[Serializable] class Hero { public string HeroName; public string Hp; public string Attack; public List<Skill> Skills = new List<Skill> (); } [Serializable] class Skill { public string keyCode; public string Name; public string CD; public string MP; } void CreatJson () { JsonData nuoke = new JsonData (); nuoke ["HeroName"] = "诺克"; nuoke ["HP"] = 1000; nuoke ["Attack"] = 550; nuoke ["Skills"] = new JsonData (); //一技能:大杀四方 JsonData skill1 = new JsonData (); skill1 ["keyCode"] = "Q"; skill1 ["Name"] = "大杀四方"; skill1 ["CD"] = "9/8/7/6/5"; skill1 ["MP"] = "30"; //二技能:致残打击 JsonData skill2 = new JsonData (); skill2 ["keyCode"] = "W"; skill2 ["Name"] = "致残打击"; skill2 ["CD"] = "9/8/7/6/5"; skill2 ["MP"] = "30"; //三技能:无情铁手 JsonData skill3 = new JsonData (); skill2 ["keyCode"] = "E"; skill2 ["Name"] = "无情铁手"; skill2 ["CD"] = "24/21/18/15/12"; skill2 ["MP"] = "30"; //大招:诺克萨斯断头台 JsonData skill4 = new JsonData (); skill2 ["keyCode"] = "R"; skill2 ["Name"] = "诺克萨斯断头台"; skill2 ["CD"] = "120/100/80"; skill2 ["MP"] = "100/100/0"; //将生成的技能对象放到诺克的技能中 nuoke ["Skills"].Add (skill1); nuoke ["Skills"].Add (skill2); nuoke ["Skills"].Add (skill3); nuoke ["Skills"].Add (skill4); //将生成的对象转化成json文档 string json = JsonMapper.ToJson (nuoke); //将json写入到文件 string path = Application.streamingAssetsPath + "/Nuoke.json"; StreamWriter sw = new StreamWriter (path); sw.Write (json); sw.Close (); } //解析json void PraseJson () { FileInfo file = new FileInfo (Application.dataPath + "/StreamingAssets/Nuoke.json"); StreamReader reader = new StreamReader (file.OpenRead (), Encoding.UTF8); string content = reader.ReadToEnd (); reader.Close (); reader.Dispose (); JsonData nuokeData = JsonMapper.ToObject (content); m_text.text = "英雄:" + nuokeData ["HeroName"] + " "; //通过JsonData对象访问数据 for (int i = 0; i < nuokeData ["Skills"].Count; i++) { m_text.text += "技能:" + nuokeData ["Skills"] [i] ["Name"] + " 技能键: " + nuokeData ["Skills"] [i] ["keyCode"] + " CD: " + nuokeData ["Skills"] [i] ["CD"] + " MP: " + nuokeData ["Skills"] [i] ["MP"] + " "; } }
写入Json的中文会默认转化为UTF-8编码格式,在解析时,只需转换格式即可
unity3d使用litjson中文显示的问题 ,一下代码选至(https://www.cnblogs.com/fyluyg/p/5963052.html) 我们在使用litjson时它的编码方式是unicode的,所以我将json转成string输出时显示的是unicode的编码。这样我们显示或者保存中文时不是很方便。我们可以将中文的unicode转成能识别的GBK编码。 1 using UnityEngine; 2 using System.Collections.Generic; 3 using Utils; 4 using LitJson; 5 using System; 6 using System.Text.RegularExpressions; 7 8 public class Script1 : MonoBehaviour 9 { 10 public void OnTestJson() 11 { 12 JsonData sData = new JsonData(); 13 JsonData data1 = new JsonData(); 14 JsonData data2 = new JsonData(); 15 16 data1["等级"] = "54"; 17 data1["位置"] = "m=1000,x=33,y=21"; //新手村 18 19 data2["等级"] = "56"; 20 data2["位置"] = "m=1001,x=58,y=97"; //桃园镇 21 22 sData["张三"] = data1; 23 sData["李四"] = data2; 24 25 string jsonStr = sData.ToJson(); 26 27 Regex reg = new Regex(@"(?i)\[uU]([0-9a-f]{4})"); 28 var ss = reg.Replace(jsonStr, delegate(Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); }); 29 30 31 print(ss); 32 } 33 }