[Unity] LitJson: 解析物件出現 System.InvalidCastException: Specified cast is not valid.
2022/07/13 10:19:08
今天在寫與後端 API 串接的接口,原本用 Unity 內建的 JsonUtility 來解析 JSON 字串,但它實在太過精簡了,就連 top-level 是陣列的 JSON 都解析不出來,一定要包個 wrapper 才能用,所以我就轉而使用其他函式庫了。Newtonsoft.Json 很強大但是有點臃腫,也不太好直接放進 Unity 裡面,所以最後是選用 LitJson 這個小巧的包。
問題敘述
來上今天的 Code
[ ] |
ApiResponseModel resultModel = JsonMapper.ToObject<ApiResponseModel>(jsonStr); |
會報出 System.InvalidCastException: Specified cast is not valid. 的錯誤
解決方法
經過研究, LitJson 似乎沒辦法「先斬後奏」,先把 Json 轉成包含 object 的 class,再把那個 object 轉回要用的型態。
所以我們要把 ApiResponseModel 換成固定型別,這裡我就換成汎型 T,如果沒有汎型需求可以直接換需要的強型別。
[ ] |
ApiResponseModel<T> resultModel = JsonMapper.ToObject<ApiResponseModel<T>>(jsonStr); |