Unity中的Json字符串转对象

本文介绍了在Unity中,当Unity内置的JsonUtility无法满足复杂JSON转换需求时,如何利用Newtonsoft.Json库进行更强大的转换操作。通过示例代码展示了Newtonsoft.Json的用法,以及它如何成功解析包含嵌套对象的JSON字符串。
Unity访问网络API的时候,经常需要对Json字符串进行转换。Unity自带了一个Json转换的类JsonUtility。但是这个类功能不够强大,只能进行简单的转换。
其实Unity已经将Newtonsoft.Json内置进去了。
这个功能就比JsonUtility强大很多。使用的时候,添加一个引用即可。
用JsonUtility转换就无法把backResult转换出来,用Newtonsoft.Json就可以转换出正确结果。
例如下面代码:
using UnityEngine; using Newtonsoft.Json; public class JsonToObj : MonoBehaviour { string jsonString = "{\"code\":200,\"msg\":\"成功\",\"backResult\":{\"sessionID\":\"205ec794-767f-4fd7-ab6e-7d087989e990\",\"rtmpAddr\":\"rtmp://122.1.11.30:20002/live/205ec794-767f-4fd7-ab6e-7d087989e990?user=scth\",\"flvAddr\":\"http://122.1.11.30:20007/flv?port=20002&app=live&stream=205ec794-767f-4fd7-ab6e-7d087989e990&user=scth\",\"hlsAddr\":\"http://122.1.11.30:20007/hls/205ec794-767f-4fd7-ab6e-7d087989e990.m3u8?user=scth\",\"code\":200,\"info\":\"推送成功\"}}"; void Start() { StreamingGet sg; sg = JsonUtility.FromJson<StreamingGet>(jsonString); Debug.Log("JsonUtility.FromJson"); Debug.Log("code:" + sg.code); Debug.Log("backResult:" + sg.backResult); //Debug.Log("backResult.seesion:" + sg.backResult.sessionID); sg = JsonConvert.DeserializeObject<StreamingGet>(jsonString); Debug.Log("JsonConvert.DeserializeObject"); Debug.Log("code:" + sg.code); Debug.Log("backResult:" + sg.backResult); Debug.Log("backResult.seesion:" + sg.backResult.sessionID); } }
运行后的效果
源码链接:https://gitee.com/BackFlowLake/UnityAndJson
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值