# SJson **Repository Path**: huyistudio/SJson ## Basic Information - **Project Name**: SJson - **Description**: 采用java反射和自带的json解析来实现json转Object 的操作 - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 2 - **Created**: 2015-08-13 - **Last Updated**: 2022-01-18 ## Categories & Tags **Categories**: json-tools **Tags**: None ## README ##Sjon的初衷是什么? 有没有遇到服务器接口返回数据总是不固定的情况? ```java //这是接口的定义: ArrayList students; int counts; //这是他喵的服务器返回: {"students" :[], "counts":0} //这也是他喵的服务器返回: {"students" :"", "counts":""} ``` 遇到这种情况,是不是总是不能使用gson和fastjson这样的工具?因为会报错!CastClassException! 面对这样的情况你只想说什么:WTF! ##Sjon有哪些功能? * json字符串直接转化为java对象或数组 * 采用java反射 * 规避gson等工具的强转错误 * 类型不匹配提示 * 不匹配类型自动赋值和转化 * json数据字段和java对象字段比较 * 列出差异字段 * 不同颜色标识 ##Sjon有哪些缺陷? * 性能不高 * 采用反射,速度相对慢,不适合大量的数据 * 不如Gson高效(Nexus4 5.1.1系统): ![万次效率对比](http://static.oschina.net/uploads/space/2015/0827/182442_JEOk_195456.png) * 最新优化之后,虽然有点进步,但还是有:Gson:Sjon= 3:10的差距 * 支持类型不足 * 支持:基本数据类型,数组,自定义对象 * 不支持:Map,泛型,等 * 代码写的不好 * 会给想阅读代码的你带来不便吧,たぶん ##使用方法 ###json转对象 ```java /** * Json字符串转为JavaBean **/ String jsonString = "{"this":"jsonObjectString"}"; JavaBean bean = Sjson.jsonToObject(jsonString, JavaBean.class); /** * JSONObject转为JavaBean **/ JSONObject jsonObject = new JSONObject("{"this":"jsonObjectString"}"); JavaBean bean = Sjson.jsonToObject(jsonObject, JavaBean.class); /** * Json字符串转为Java数组 **/ String jsonString = "[{"this":"jsonObjectString"},{"this":"jsonObjectString"}]"; ArrayList beanList = Sjson.jsonToArray(jsonString, JavaBean.class); /** * JSONArray转为Java数组 **/ JSONArray jsonArray = new JSONArray("[{"this":"jsonObjectString"},{"this":"jsonObjectString"}]"); ArrayList beanList = Sjson.jsonToArray(jsonArray, JavaBean.class); ``` ###打印java与Json不同开关 ```java Util.showDiff = true; ``` ###打印java与Json不同结果示例 ```java Key JavaBean Json value this √ √ jsonObjectString that √ × (Json Havn't) they × √ jsonObjectString them × × (Json Havn't) ``` ##有问题反馈 在使用中有任何问题,欢迎反馈给我;或者如果你有新的想法和建议,都可以用以下联系方式跟我交流 * 邮件: 814084764@qq.com ##关于作者 一个喜欢写代码,但总是写不好的农民工。