Unity3D开发之Json解析

Unity自带的JsonUtility我之前使用过,记得有些问题,所以就没有使用,转而使用LitJson。我们首先需要获取LitJson.dll然后放到项目Plugins下供我们的项目引用。下面是我们要解析的json字符串:

{"currentPlayerId": "test", "gameId": "test", "tableHeight": "1000", "timeStamp": "2018-12-06 21:58:34", "tableWidth": "1000", "requestId": "test", "data": [{"right": 255, "bottom":
397, "top": 373, "class": "10", "prob": 0.9994145035743713, "left": 226}, {"right": 201, "bottom": 451, "top": 427, "class": "2", "prob": 0.9997078776359558, "left": 171}, {"right":
639, "bottom": 195, "top": 170, "class": "0", "prob": 0.9980689883232117, "left": 607}]}//770

代码如下:

 public void GetData() 
    {
        playerInfo.ResetData();
        jsonData = JsonMapper.ToObject(str);
        playerInfo.PlayerId = jsonData["currentPlayerId"].ToString();
        playerInfo.GameId= jsonData["gameId"].ToString();

        jsonData = jsonData["data"];
        foreach (JsonData item in jsonData)
        {
            string id =item["class"].ToString();

            float right = float.Parse(item["right"].ToString());
            float left = float.Parse(item["left"].ToString());
            float top = float.Parse(item["top"].ToString());
            float bottom = float.Parse(item["bottom"].ToString());

            playerInfo.AddData(id,new Vector4(right,left,top,bottom));
        }
    }

2019.5.5更

今天做了一个小功能,将数据类里的数据序列化成json格式字符串。其中一部分是保存的位置数据。即vector3。但是报错了,序列化失败。最后发现是数据格式不被litjson支持的原因。我们在jsondata类里可以看到如下:

        public JsonData();
        public JsonData(bool boolean);
        public JsonData(double number);
        public JsonData(int number);
        public JsonData(long number);
        public JsonData(object obj);
        public JsonData(string str);

即litjson不支持float类型的数据,所以在序列化的类中我们要改变保存位置信息数据的类型。

 

2019.4.10更

做了一个对象序列化成字符串,但是在string字串中含有中文,被litjson序列化后会出现中文乱码。需要进一步转换:

  string str = System.Text.RegularExpressions.Regex.Unescape(  LitJson.JsonMapper.ToJson(mydata));///解决json解析中文乱码问题

使用正则表达式转换乱码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值