unity jeson 解析技巧

接手一项目实时数据传输协议用的jeson,个人觉得jeson协议使用就是方便,然后
jeson数据序列二进制后比较谷歌protobuf要大一半左右。
之前和同事聊天时protobuf 对可变长类型字节压缩
对于 int32 类型的数字,一般需要 4 个字节 来表示;
但采用 Varint 方法,对于很小的 Int32 类型 数字(小于256),则可以用 1个字节 来表示

jeson 数据解析时,每个key 对应值 toString 转换处理 会造成过多垃圾
例如:jd[“type”].ToString()

jeson 格式定好后,客户端要写一个类或结构体 其属性 要和jeson的key一模一样
例如
服务端 jeson 格式 :
{“datas”: {“type”:”1”,”num”:10}}//注意 key 对应的vaule如果没有加双引号jeson解析对象会解释为int
unity 客户端 定义一个结构体
例如 :

public struct TestJeson
{
  public string type;
  public int num;//对应jeson key num (int类型)
}

客户端拿到数据后需要进行对jeson解析为对象

    TestJeson testJeson=JsonMapper.ToObject<TestJeson>(jd["datas"].ToJson());

这里unity 用LitJeson插件。
值得说明的是:
unity在通信大的情况下 对jeson进行解析处理不好会造成mono暴涨,非常可怕,将jeson数据全部用tostring ,而不用转成对象 。

1.tostring 在大量数据解析情况下mono飞快的涨到400+

2.转对象后,mono维持在20左右

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

tianyongheng

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值