美文网首页Unity技术应用
Unity中litjson解析踩坑

Unity中litjson解析踩坑

作者: 丛小胖有个锤子 | 来源:发表于2020-04-30 08:54 被阅读0次

    Litjson的官网地址:litjson.net

    Unity开发中需要对服务器传来的json字符串进行解析显示,这部分首先想到的是用开源库Litjson进行处理。

    Invalid character '

    在拿到服务器发来的字符串进行解密处理后得到string类型数据后,使用Litjson进行解析:

    LitJson.JsonData jsonData = LitJson.JsonMapper.ToObject(msg);

    这一步在项目运行时遇到报错:LitJson.JsonException: Invalid character '

    原因是由于有的协议在解密处理转换为c#的字符串string时,会在末尾有一个'\0'字符;

    LitJson库实现时考虑不周全,没有考虑到字符‘\0’的关系;LitJson可能认为一个c#字符串中不应该包含’/0’,所以他没有处理这种情况,对于不能处理的字符他抛出了一个异常。

    另外,对于不能处理的字符,Litjson应该会将出错字符的日志打印出来,比如 LitJson.JsonException: Invalid character 'v' in input string;

    所以正常这部分出错应该会打出这样的日志:LitJson.JsonException: Invalid character '\0' in input string;但是由于'\0'在打印的时候会截断后面的日志,所以只显示了LitJson.JsonException: Invalid character ' 。

    解决方案

    若使用Litjson源码的话,可以在Lexer.cs中,在

    private static bool State1 (FsmContext ctx) 函数的switch处理中,添加上 :
    
    case '\0':
    
    return true;
    

    然后再继续使用LitJson.JsonData jsonData = LitJson.JsonMapper.ToObject(msg); 就不会报错了;

    相关文章

      网友评论

        本文标题:Unity中litjson解析踩坑

        本文链接:https://www.haomeiwen.com/subject/mrbawhtx.html