Gson json 简化 优化

本文介绍了一种简化JSON解析的方法,通过使用Gson库和泛型,将复杂的JSON数据一次性转换为对应的POJO对象,大大提高了代码的可读性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天代码review的时候 发现同事解析一段json  做法很麻烦  所以我就帮他重构了一下  

{
	"total": 51,
	"per_page": 15,
	"current_page": 1,
	"last_page": 4,
	"data": [{
		"id": 00,
		"title": "地铁旁+精装全明办公间+中小企业拎包入住+虚拟办公",
		"image": "http://&&&&&&&&/uploads/2019/06/27/d14e92b1dda02888c6859f6c845f2a2c/thumb/thumb.jpg?id=1561597784",
		"tag": "创业首选",
		"square": "23.42",
		"floor": "6",
		"total_floor": "36",
		"build_id": 12,
		"build_name": "1111大厦",
		"entity_status": "空置",
		"entity_finsh_time": "随时签约",
		"house_num": "D1111609",
		"yuyue_status": 0
	}]
}

他拿到这段json 的时候   先把父json 各个字段 获取到  然后通过一个字段 拿到子json 的字符串 再进行pojo映射   

我觉得这段代码可以优化为一次映射    只不过需要用一下泛型的知识  

 

通过三行代码 就可以把这个json 完全映射好   

Gson gson1 = new Gson();
Type testpojo = new TypeToken<TestPojo<ListPojo>>(){}.getType();
TestPojo<ListPojo> getdata = gson1.fromJson(s, testpojo);

优化的地方 主要在于省去了一个字段一个字段的获取  然后再映射listpojo对象    

一review 就头疼。。。

 

 

 

 

 

 

 

介绍 JSONLite 是 JSON简化版。减少字符输出的同时,仍保持数据有效性。 建议PHP版本 >= 5.2.0 。 特性 Js 兼容模式,兼容Js语法。取消了不必要的双引号。 Strict 强类型模式,提供强类型输出与解析,可用于与强类型语言通讯。 如 1.0 序列化和解序列后的类型均为 double,不会转换为 int 1。 Min 最小化模式,最小化输出数据,可用于日志打印。 较为精确的错误位置和信息提示。 解析时更为显性的暴漏格式错误 示例代码: $value = array( 'code' => '123', 'msg' => 'true str', 'null' => null, 'new' => '', 'double' => 1.0, ); // serialize // js echo jsonlite_encode($value); // {code:123,msg:"true str","null":0,"new":"",double:1} // min echo jsonlite_encode($value, JSONLITE_MODE_MIN); // {code:123,msg:true str,"null":,new:,double:1} // strict echo jsonlite_encode($value, JSONLITE_MODE_STRICT); // {code:"123",msg:true str,"null":null,new:,double:1.0} // unserialize $jsonlite = '{code:123,msg:true str,"null":null,new:,double:1}'; $value = jsonlite_decode($jsonlite); var_export($value); /** * array ( * 'code' => 123, * 'msg' => 'true str', * 'null' => NULL, * 'new' => '', * 'double' => 1, * ) */ // work with json $value = array( 'code' => '123', 'msg' => 'true str', 'null' => null, 'new' => '', 'double' => 1.0, ); $json = json_encode($value); // ATTENTION:encode with json // {"code":"123","msg":"true str","null":null,"new":"","double":1} $value = jsonlite_decode($json); var_export($value); /** * array ( * 'code' => 123, * 'msg' => 'true str', * 'null' => NULL, * 'new' => '', * 'double' => 1, * ) */ 体积对比 根据测试数据计算,实际情况请另行估算。 模式 JSON JSONLite 变化量 变化率 array_js 92 92 0 0.00% array_strict 92 74 -18 19.57% array_min 92 70 -22 23.91% map_js 111 97 -14 12.61% map_strict 111 83 -28 25.23% map_min 111 81 -30 27.03% 标签:JSONLite 分享 window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "2", "bdMiniList": [], "bdPic": "", "bdStyle": "1", "bdSize": "24" }, "share": {} }; with (document)0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' ~(-new Date() / 36e5)];\r\n \r\n \r\n \r\n \r\n \u8f6f\u4ef6\u9996\u9875\r\n \u8f6f\u4ef6\u4e0b\u8f7d\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\nwindow.changyan.api.config({\r\nappid: 'cysXjLKDf', conf: 'prod_33c27aefa42004c9b2c12a759c851039' });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值