Json 数据解析小计

读取配置表i信息:

private void LoadDefaultConfig()
{
        TextAsset binAsset = ResourceMgr.LoadConfig("Config/Default", typeof(TextAsset)) as TextAsset; 
        string[] lineArray = binAsset.text.Split("\r"[0]);//获取换行后的所有信息
        string[][] array = new string[lineArray.Length][];
        for (int i = 0; i < lineArray.Length; i++)
        {
            array[i] = lineArray[i].Split("\t"[0]);//按空格分隔
            if (i == 0)
            {
                continue;
            }
            if (array[i].Length != 9)
            {
                continue;
            }
            DefaultConfig info = new DefaultConfig();
            info.id = int.Parse(array[i][0]);
            if (!_dic_Defaultconfig.ContainsKey(info.id))
            {
                _dic_Defaultconfig.Add(info.id, info);
            }
        }
}
///加载资源类 ResourceMgr
private static AssetBundle cachedConfig;
public static Object LoadConfig(string name, System.Type type)
{
        Object obj = null;
        if (AssetConfig.UseAssetBundle)
        {
            if (cachedConfig == null)
            {
                string path = AssetConfig.configBundle;                
                using (FileStream fs = File.OpenRead(AssetConfig.runningPath + path))
                {
                    byte[] data = new byte[fs.Length];
                    fs.Read(data, 0, data.Length);
                    cachedConfig = AssetBundle.LoadFromMemory(DecryptAes(data));
                }
            }
            obj = cachedConfig.LoadAsset(name.Replace("Config/", "") + ".txt", type);
        }
        else
        {
#if UNITY_EDITOR
            obj = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/" + name + ".txt", type);
#endif
        }
        return obj;
}

public static string runningPath
{
        get
        {
            if (Application.platform == RuntimePlatform.IPhonePlayer && PlayerPrefs.GetString("CopyFilesInIOS") != "Done")
                return Application.streamingAssetsPath + "/" + AssetResRoot + "/";
            return Application.persistentDataPath + "/" + AssetResRoot + "/";
        }
}

private static byte[] DecryptAes(byte[] data)
{
        using (System.Security.Cryptography.AesCryptoServiceProvider aesProvider = new System.Security.Cryptography.AesCryptoServiceProvider())
        {
            aesProvider.Key = AssetConfig.GetAesKey();
            aesProvider.Mode = System.Security.Cryptography.CipherMode.ECB;
            aesProvider.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
            using (System.Security.Cryptography.ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor())
            {
                byte[] results = cryptoTransform.TransformFinalBlock(data, 0, data.Length);
                aesProvider.Clear();
                return results;
            }
        }
}

1.数字数组json 格式

public List<int> ReadDataToNum(string str)
{
        List<int> list = new List<int>();
        if (str != "null")
        {
             string  strs;
             if (str.Contains(","))
             {
                 strs = str.Substring(1, str.Length - 2);
             }
             else
             {
                 strs = str;
             }
            JsonData jd = JsonMapper.ToObject(strs);
            for (int i = 0; i < jd.Count; i++)
            {
                list.Add(int.Parse(jd[i].ToString()));
            }
        }
        return list;
}

2.属性值json 格式  "[{""AttrId"":101,""AttrValue"":1000}]"

//AttTypeEnum 枚举
//不同属性值id
public SortedDictionary<AttTypeEnum, float> ReadTypeAdditionInfo(string str)
{
        SortedDictionary<AttTypeEnum, float> levelAddList = new SortedDictionary<AttTypeEnum,float>();
        if (str != "null")
        {
            string strs;
            if (str.Contains(",") || str.Substring(0,1) == "\"" )
            {
                strs = str.Substring(1, str.Length - 2).Replace("\"\"", "\"");
            }
            else
            {
                strs = str.Replace("\"\"", "\"");
            }            
            JsonData jd = JsonMapper.ToObject(strs);
            IDictionary dict = jd as IDictionary;
            foreach (string key in dict.Keys )
            {
                AttTypeEnum aType = (AttTypeEnum)int.Parse(key);
                float value = float.Parse(dict[key].ToString() );
                levelAddList.Add(aType, value);
            }            
        }
        return levelAddList;
}

3.道具 Item 类 json 格式  "[{""ItemId"":1,""ItemQuantity"":50}]"

public class TaskItem
{
    public int Itemid;
    public int Itemnum;
}
public List<TaskItem> ReadTaskReward(string str)
{
    List<TaskItem> list = new List<TaskItem>();
    if (str != "null")
    {
       string strs = str.Substring(1, str.Length - 2).Replace("\"\"", "\"");
       JsonData jd = JsonMapper.ToObject(strs);
       for (int i = 0; i < jd.Count; i++)
       {
          TaskItem data = new TaskItem();
          data.Itemid = int.Parse((jd[i]["ItemId"]).ToString());
          data.Itemnum = int.Parse((jd[i]["ItemQuantity"]).ToString());
          list.Add(data);
       }
   }
   return list; 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值