unity json处理方式 之 JsonUtility 支持包括webgl在内的全平台

在做项目的时候无法避免使用json数据。在unity中你无法使用普通c#的工具库。因为unity涉及多个跨平台编译,如果你的工具库不支持那可就要哭了。

目前支持全平台编译的json工具库比较有名的有三个,分别是:JsonUtility、newtonjson还有litjson。
本篇只做JsonUtility的用法介绍。
需要注意的是JsonUtility只支持构建对象的方式创建和获取json数,不支持键值对的方式获取。也就是说如果你获取的json由于命名不规范导致的对象名是数字字符串的情况下,你就不能使用JsonUtility了,因为我们无法在c#中创建一个由纯数字命名的属性名。这种情况只能使用LitJson

如果有对LitJson感兴趣的可以看我这篇教程《unity json数据处理方式之 LitJson 使用教程,支持键值对方式,支持包括webgl在内的全平台》

创建json对象结构

使用Serializable语义可以使类可以被序列化。多个类层级调用,就相当于json的多层数据。下面代码定义了一个2层的json数据结构

//  二层json数据
[Serializable]//序列化
public class AssetbundleFile
{
    public string name;
    public string url;
}
// 顶层json数据
[Serializable]//序列化
public class AssetbundleResource
{
    public string version;
    public bool updating;
    public AssetbundleFile[] assetbundleFiles;
}

以上代码定义的json结构实际上就是这样的:

{
	"version":"",
	"updating":false,
	"assetbundleFiles":[
		{
			"name":"","url":""
		}
	]
	...
}

创建json对象, 并填充数据

   void Main(){
        //
        AssetbundleResource assetbundleResource = new AssetbundleResource();
        assetbundleResource.assetbundleFiles = new AssetbundleFile[]{
            new AssetbundleFile(){
                name = "file1",
                url = "111"
            },
            new AssetbundleFile(){
                name = "file2",
                url = "222"
            }
        };

json对象转json数据字符串

        // c#对象转json字符串
        string jsonStr = JsonUtility.ToJson(assetbundleResource);
        Debug.Log("json字符串:"+ jsonStr);

json数据字符串转json对象

        // json字符串转c#对象
        AssetbundleResource _assetbundleResource = JsonUtility.FromJson<AssetbundleResource>(jsonStr);
        Debug.Log("数据0的name数据为:" + _assetbundleResource.assetbundleFiles[0].name);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千年奇葩

从来没受过打赏,这玩意好吃吗?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值