Unity—Json2

走过的坑,插个旗:

1.百度EXCEL转Json,有的网站如https://www.bejson.com/json/col2json/这个:

   转成的Json,最后会多出个,空格并不影响;

2.如前文中提及的json不要出现中文,若有先转成UTF-8;

3.我的实用案列

基类配置属性

 

public class Iconfigures
{
    public string ID;   
    public string Colour_Body;
    public string Light_Head;
    public string Light_Tail;
    public string Colour_Interior;
}

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;

public class SaveIC : MonoBehaviour
{

    public Dictionary<string, Iconfigures> dataDic = new Dictionary<string, Iconfigures>();

    private List<Iconfigures> icList = new List<Iconfigures>();
    // Use this for initialization
    void Start()
    {
        LoadConfig();
    }



    void LoadConfig()                              //将EXCEL转换的JSON字符串文件赋值给我的配置表基类(Iconfigures),并最终实例到字典Dic中
    {
        TextAsset ta = Resources.Load<TextAsset>("Configure");
        Debug.Log($"{ta.text}");
        JsonData jd = JsonMapper.ToObject(ta.text);
        if (ta)                                                      
        {

            Iconfigures ic = new Iconfigures();
            Debug.Log($"AAA:{jd.Count}");//2

            icList = JsonMapper.ToObject<List<Iconfigures>>(jd.ToJson());              //采用List的方法一,但是发现,因为Json全是string格式,
                                                                   //如果配置基类中有Int等不同类型,不能用ToObject直接赋值,可以考虑中间变通
            foreach (Iconfigures info in icList)
            {
                ic = info;
                dataDic.Add(ic.ID, ic);
            }


            //for (int i = 0; i < jd.Count; i++)                                      //采用一一赋值的方法二
            //{
            //    ic.ID = int.Parse((string)jd[i]["ID"]);
            //    Debug.Log($"A:{ic.ID}");
            //    ic.Colour_Body = (string)jd[i]["Colour_Body"];
            //    Debug.Log($"A:{ic.Colour_Body}");
            //    ic.Colour_Interior = (string)jd[i]["Colour_Interior"];
            //    ic.Light_Head = (string)jd[i]["Light_Head"];
            //    ic.Light_Tail = (string)jd[i]["Light_Tail"];
            //    dataDic.Add(ic.ID, ic);
            //}

        }


        Iconfigures item;
        dataDic.TryGetValue("10001", out item);
        Debug.Log($"BBB:");
        if (item != null)
        {
            Debug.Log($"CCC:");
            Debug.LogError($"item:{item.ID}");
        }
    }
}
View Code

 

posted @ 2018-04-25 18:47  小柏树  阅读(176)  评论(0编辑  收藏  举报