U3D Json

 //写入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 }
原文地址:https://www.cnblogs.com/zpy1993-09/p/11793401.html