Unity自带JsonUtility类,解析感觉不是很好用,数组解析不出来。fastJson 自己定义json数据结构的时候是好用,但是对于解析网络下载json感觉不是很好用。于是就用了LitJson,记得应该是我第一次解析json用的插件,但是很久没用,忘记怎么用了,于是记一下吧。
RecData data = new RecData();
JsonData jsonObj = JsonMapper.ToObject(www.downloadHandler.text);
if (jsonObj["log_id"] != null)
{
data.log_id = (long)jsonObj["log_id"];
data.result_num = (int)jsonObj["result_num"];
var arrdata = jsonObj["result"];
data._result = new ResultData[arrdata.Count];
for (int i = 0; i < arrdata.Count; i++)
{
ResultData _item = new ResultData();
_item.score = float.Parse(arrdata[i]["score"].ToString());
_item.root = (string)arrdata[i]["root"];
_item.keyword = (string)arrdata[i]["keyword"];
data._result[i] = _item;
}
}
JsonData 就是就是类似一个字典,可以通过index 或者 json中数据的key 获取到数据,然后一层一层解析数据。
遇到数组可以遍历JsonData。
写数据用JsonWriter
StringBuilder sb = new StringBuilder();
JsonWriter writer = new JsonWriter(sb);
writer.WriteArrayStart();
writer.WriteObjectStart();
for(int i = 0;i<3;i++){
writer.WritePropertyName("color");
writer.Write("blue");
}
writer.WriteObjectEnd();
writer.WriteArrayEnd();