unity json数据处理方式之 LitJson 使用教程,支持键值对方式,支持包括webgl在内的全平台

最近遇到了新的需求。由于后端人员数据不规范,导致本该是数组的部分被构建成了对象。由于unity自带的json工具JsonUtility必须要构建相同的类结构才能反序列化,所以这样就出现了一个问题,即数字无法成为参数。我们无法构建这样的数据格式。那就没办法了。只能选择键值对的方式来获取数据

目前支持全平台编译的json工具库比较有名的有三个,分别是:JsonUtility、newtonjson还有LitJson
其中newtonjson体积过于庞大(250k),而JsonUtility又不支持键值对。所以我们只能选择使用LitJson

如果有对JsonUtility感兴趣的可以看我这篇教程《unity json处理方式 之 JsonUtility 支持包括webgl在内的全平台》

一 安装LitJson

1.1 下载资源

首先到LitJson官网下载unity的package包

2.2 安装

下载完成后,在unity项目打开的情况等下,双击进行package进行资源导入。

二 使用

2.1 序列化方式

LitJson有多个使用方式。方式之一就是数据结构序列化。与JsonUtility一样,我们需要根据json构建数据结构。

2.1.1 object转为json数据
// 数据结构样例
using LitJson;
// 创建数据结构 本质就是类
[Serializable]
public class Person
{
    public string name;
    public int id;
}
public class JsonTest{
	// 从对象转换成json数据的方法 
    public void ObjectToJson()
    {
        // 实例化数据对象
        Person persion1 = new Person();
        // 数据对象赋值
        persion1.name = "特朗普";
        persion1.id = 748;
        // 将数据对象转为字符串
        string jsonStr = JsonMapper.ToJson(persion1);
        Debug.Log("转换后的json字符串是:" + jsonStr);
        
        //json字符串转为对象
        Person persion2 = JsonMapper.ToObject<Person>(jsonStr);
        Debug.Log("字符串转化成对象后的name数据:" + persion2.name);
    }
}
2.1.2 json数据专为object
// 数据结构样例
using LitJson;
public class JsonTest{
	// 从对象转换成json数据的方法 
    public void ObjectToJson()
    {
        // 要转换的json数据
        string jsonStr = @"  
            {  
                ""name"" : ""alex"",  
                ""id"" : 131231232,  
            }";
        //json字符串转为对象
        Person persion2 = JsonMapper.ToObject<Person>(jsonStr);
        Debug.Log("字符串转化成对象后的name数据:" + persion2.name);
    }
}
2.2 键值对方式

这是使用最简便的方式。由于使用key>value的方式创建或获取,所以无法再数据结构中加入相应的处理方法。所以使用这种方式一般强调的就只是数据的获取

2.2.1 json的构建

与2.1.1同

2.2.2 json的解析
using LitJson;
// 定义一个json字符串
public class jsonTest{
	public void GetJsonData(){
        string jsonStr = @"  
            {  
                ""name"" : ""alex"",  
                ""id"" : 131231232,  
                ""1"":[  
	                {  
	                    ""n1"" : ""n1"",  
	                    ""n2"" : 1
	                },  
	                {  
	                    ""n1"" : ""n11"",  
	                    ""n2"" : 2
	                }  
                ]  
            }";  
        // 解析json字符串 
        JsonData jsonData = JsonMapper.ToObject(jsonStr);  
        // 根据json的对象名来获取数据
        Debug.Log("name = " + (string)jsonData["name"]);  
        Debug.Log("id = " + (int)jsonData["id"]);  
        // 有经验的程序员都知道,就算支持也不要用纯数组做对象名!!!
        JsonData jsonData_array = jsonData["1"];   
        // 遍历获取数组数据
        for (int i = 0; i < jsonData_array.Count; i++)  
        {  
            Debug.Log("n1 = " + jsonData_array[i]["n1"]);  
            Debug.Log("n2 = " + (int)jsonData_array[i]["n2"]);  
        }  
    }
}

关于float,int,等类型的转换问题

有时从json数据转换到float和int时,会产生转换问题,同一个属性,有时系统说是浮点,有时说是整数。 这时只需使用Conver.toXXX(jsondataObject.toString()); 即可成功专用换。重点是先转换成字符串,再转换成数字!

  • 10
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Unity WebGL的确支持中文输入。Unity是一款跨平台的游戏引擎,可以用于开发游戏以及其他虚拟现实、增强现实和模拟应用程序。Unity WebGLUnity引擎的一个平台,可以将Unity的游戏和应用程序发布到Web上,让用户可以直接在web浏览器中进行游戏体验。 Unity WebGL通过支持HTML5技术,可以在Web浏览器中实现与用户的交互。在web页面中嵌入Unity WebGL应用程序后,用户可以使用他们的键盘和鼠标与游戏进行互动。 而对于中文输入,Unity WebGL同样可以支持。用户可以在Web浏览器中使用中文输入法输入中文字符,然后将字符传输给Unity WebGL应用程序,并对其进行相应处理。 Unity在处理用户输入时,可以识别各种输入设备,包括键盘、鼠标和触摸屏等。对于中文输入,Unity可以通过适配浏览器中的中文输入法,实现用户在游戏中输入中文字符的功能。 因此,Unity WebGL支持中文输入,用户可以在Web浏览器中使用中文输入法与Unity WebGL应用程序进行互动和交流。这为中文用户提供了更好的游戏体验和应用程序使用体验。 ### 回答2: Unity WebGL 支持中文输入,并且可以通过以下方式实现。 Unity使用的开发工具可以支持多国语言输入,包括中文。在Unity中,可以使用Input 类来获取用户的输入。在WebGL平台上,Unity将自动处理由键盘和鼠标输入产生的中文字符。 在Unity的脚本中,可以使用Input 类中的GetAxis和GetButton等方法来获取用户输入。对于中文输入,可以使用Input 类中的GetKeyDown或GetKeyUp等方法来判断用户是否按下或释放了某个按键,例如"enter"键来确认用户的输入。 同时,Unity还提供了一些输入法接口,可以用于监听中文输入的事件。例如,可以监听OnGUI事件,在GUI中实现中文输入框,并使用GUI.TextField方法来接收用户的中文输入。 需要注意的是,在使用Unity WebGL时,对于跨浏览器兼容性的考虑,可能需要额外的配置才能正确地支持中文输入。具体的配置和实现细节可以参考Unity的官方文档和论坛上相关的讨论。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

千年奇葩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值