unity使用Newtonsoft.Json
一.在Unity中使用Newtonsoft.Json來生成和讀取json

首先要在項(xiàng)目中添加引用:Newtonsoft.Json.dll

然后在代碼中添加命名空間:using Newtonsoft.Json;

這里是Json序列化和反序列化的兩個(gè)方法
序列化:JsonConvert.SerializeObject(object value)
反序列化:JsonConvert.DeserializeObject(string value, Type type)
二.使用Newtonsoft.Json時(shí)須注意的一些細(xì)節(jié)
1.數(shù)據(jù)重復(fù)添加

如果數(shù)據(jù)存在泛型List或者Arrlist時(shí),序列化和反序列化之后會(huì)出現(xiàn)數(shù)據(jù)成倍的增加,最后造成內(nèi)存溢出。(數(shù)組在序列化時(shí)是沒有問題的)
遇到這個(gè)情況的時(shí)候也是排查了很久,終于找到了一個(gè)解決辦法,在含有泛型list和arrlist的構(gòu)造方法中添加一個(gè)參數(shù)(無實(shí)際用途),這樣就可以避免序列化List時(shí)數(shù)據(jù)成倍增加。
2.字段推薦封裝
說起這個(gè),是鐵子提出到一個(gè)很有趣的事情
鐵子:如果字段用private修飾使用屬性來訪問,那么在Json序列化的時(shí)候,數(shù)據(jù)不會(huì)存進(jìn)去。
(1)首先說一下c#中封裝的定義:
????????被定義為"把一個(gè)或多個(gè)項(xiàng)目封閉在一個(gè)物理的或者邏輯的包中"。在面向?qū)ο蟪绦蛟O(shè)計(jì)方法論中,封裝是為了防止對(duì)實(shí)現(xiàn)細(xì)節(jié)的訪問。
(2)封裝的意義
???????? 1、封裝數(shù)據(jù)屬性:明確的區(qū)分內(nèi)外,控制外部對(duì)隱藏的屬性的操作行為
?????????2、封裝方法:隔離復(fù)雜度
所以要好好使用封裝,養(yǎng)成良好的代碼習(xí)慣
3.字典中K值不可以是數(shù)值類型
在使用字典存儲(chǔ)時(shí),遇到一個(gè)錯(cuò)誤:寫一個(gè)字典,存入json文件。之后讀出判斷是否存在key。結(jié)果驚奇的發(fā)現(xiàn),同一個(gè)key居然存在兩次。
原因:json會(huì)將數(shù)值key轉(zhuǎn)換為unicode
結(jié)論:使用json時(shí)字典key不可以為數(shù)值類型