走过的坑,插个旗:
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}"); } } }