Springboot中如何自動轉(zhuǎn)JSON輸出
Springboot是如此的暴力
在Controller中注解為@RestController類、@GetMapping或其他Mapping注解方法后
會自動轉(zhuǎn)成JSON格式…
后臺打印
{msg=已查詢到163條數(shù)據(jù), data_size=163, code=0, data=[Tersga{aname='萬家鋪村', sum=10, run=10, down=0, req=10}, Tersga{aname='萬年橋', sum=4, run=4, down=0, req=4}, Tersga{aname='萬龍村', sum=16, run=16, down=0, req=16}, Tersga{aname='三合村', sum=19, run=19, down=0, req=19}, Tersga{aname='上華山村', sum=6, run=6, down=0, req=6}, Tersga{aname='上杉市', sum=358, run=358, down=0, req=358}, Tersga{aname='東塘村', sum=4, run=4, down=0, req=4}, Tersga{aname='東山村', sum=17, run=17, down=0, req=17}, Tersga{aname='九木村', sum=4, run=4, down=0, req=4}, Tersga{aname='九溪源村', sum=15, run=15, down=0, req=15}, Tersga{aname='九田村', sum=3, run=3, down=0, req=3}, Tersga{aname='五福村', sum=8, run=8, down=0, req=8}, Tersga{aname='五美社區(qū)', sum=1, run=1, down=0, req=1}, Tersga{aname='五龍山村', sum=13, run=13, down=0, req=13}, Tersga{aname='仙人市村', sum=13, run=13, down=0, req=13}, Tersga{aname='光達(dá)村', sum=15, run=15, down=0, req=15}, Tersga{aname='農(nóng)裕村', sum=10, run=10, down=0, req=10}, Tersga{aname='鳳山村', sum=2, run=2, down=0, req=2}, Tersga{aname='北山村', sum=6, run=6, down=0, req=6}, Tersga{aname='雙沖村', sum=14, run=14, down=0, req=14}, Tersga{aname='雙江村', sum=13, run=13, down=0, req=13}, Tersga{aname='雙起村', sum=4, run=4, down=0, req=4}, Tersga{aname='雙龍村', sum=1, run=1, down=0, req=1}, Tersga{aname='古井社區(qū)', sum=24, run=22, down=2, req=24}, Tersga{aname='古華山村', sum=3, run=3, down=0, req=3}, Tersga{aname='和平村', sum=15, run=15, down=0, req=15}, Tersga{aname='唐田村', sum=32, run=32, down=0, req=32}, Tersga{aname='回龍村', sum=4, run=4, down=0, req=4}, Tersga{aname='團(tuán)山村', sum=13, run=13, down=0, req=13}, Tersga{aname='大眾村', sum=12, run=12, down=0, req=12}, Tersga{aname='大興村', sum=5, run=5, down=0, req=5}, Tersga{aname='大橋村', sum=10, run=10, down=0, req=10}, Tersga{aname='大魚塘村', sum=6, run=6, down=0, req=6}, Tersga{aname='天華村', sum=2, run=2, down=0, req=2}, Tersga{aname='太興村', sum=19, run=19, down=0, req=19}, Tersga{aname='太平村', sum=12, run=12, down=0, req=12}, Tersga{aname='孫家橋村', sum=9, run=9, down=0, req=9}, Tersga{aname='安沙社區(qū)', sum=15, run=15, down=0, req=15}, Tersga{aname='安沙調(diào)試', sum=5, run=5, down=0, req=5}, Tersga{aname='宋家橋村', sum=55, run=55, down=0, req=55}, Tersga{aname='官塘村', sum=8, run=8, down=0, req=8}, Tersga{aname='官橋村', sum=20, run=20, down=0, req=20}, Tersga{aname='山筆村', sum=11, run=11, down=0, req=11}, Tersga{aname='崩坎村', sum=3, run=3, down=0, req=3}, Tersga{aname='常樂村', sum=135, run=135, down=0, req=135}, Tersga{aname='干杉社區(qū)', sum=12, run=12, down=0, req=12}, Tersga{aname='廣福村', sum=3, run=3, down=0, req=3}, Tersga{aname='開慧村', sum=8, run=8, down=0, req=8}, Tersga{aname='影珠山村', sum=7, run=7, down=0, req=7}, Tersga{aname='惠農(nóng)村', sum=12, run=12, down=0, req=12}, Tersga{aname='打卦嶺村', sum=11, run=11, down=0, req=11}, Tersga{aname='拔茅田村', sum=13, run=13, down=0, req=13}, Tersga{aname='接駕嶺社區(qū)', sum=6, run=6, down=0, req=6}, Tersga{aname='文家塅村', sum=10, run=10, down=0, req=10}, Tersga{aname='斗塘新村', sum=11, run=11, down=0, req=11}, Tersga{aname='新中村', sum=12, run=12, down=0, req=12}, Tersga{aname='新云村', sum=8, run=8, down=0, req=8}, Tersga{aname='新華村', sum=12, run=12, down=0, req=12}, Tersga{aname='新明村', sum=13, run=12, down=1, req=13}, Tersga{aname='新橋村', sum=7, run=7, down=0, req=7}, Tersga{aname='新橋社區(qū)', sum=4, run=4, down=0, req=4}, Tersga{aname='新沙村', sum=12, run=12, down=0, req=12}, Tersga{aname='明月', sum=3, run=3, down=0, req=3}, Tersga{aname='明月村', sum=79, run=79, down=0, req=79}, Tersga{aname='春華山村', sum=7, run=7, down=0, req=7}, Tersga{aname='李家山社區(qū)', sum=3, run=3, down=0, req=3}, Tersga{aname='楊四廟社區(qū)', sum=15, run=13, down=2, req=15}, Tersga{aname='楊梓沖村', sum=15, run=15, down=0, req=15}, Tersga{aname='松元村', sum=2, run=2, down=0, req=2}, Tersga{aname='楓林市村', sum=3, run=3, down=0, req=3}, Tersga{aname='梁坪村', sum=1, run=1, down=0, req=1}, Tersga{aname='梅塘村', sum=12, run=12, down=0, req=12}, Tersga{aname='梅花社區(qū)', sum=2, run=2, down=0, req=2}, Tersga{aname='武塘村', sum=5, run=5, down=0, req=5}, Tersga{aname='毛塘社區(qū)', sum=17, run=17, down=0, req=17}, Tersga{aname='水塘垸村', sum=21, run=21, down=0, req=21}, Tersga{aname='沙田村', sum=15, run=15, down=0, req=15}, Tersga{aname='油鋪村', sum=11, run=11, down=0, req=11}, Tersga{aname='沿江山村', sum=13, run=13, down=0, req=13}, Tersga{aname='泗洲村', sum=14, run=14, down=0, req=14}, Tersga{aname='洞田村', sum=2, run=2, down=0, req=2}, Tersga{aname='洪河村', sum=3, run=3, down=0, req=3}, Tersga{aname='測試一', sum=11, run=11, down=0, req=11}, Tersga{aname='潯龍河村', sum=25, run=24, down=1, req=25}, Tersga{aname='澗山村', sum=12, run=12, down=0, req=12}, Tersga{aname='湘陰港村', sum=1, run=1, down=0, req=1}, Tersga{aname='牌樓村', sum=155, run=155, down=0, req=155}, Tersga{aname='特立村', sum=1, run=1, down=0, req=1}, Tersga{aname='獅山村', sum=20, run=20, down=0, req=20}, Tersga{aname='王公橋村', sum=2, run=1, down=1, req=2}, Tersga{aname='王梓園村', sum=15, run=15, down=0, req=15}, Tersga{aname='田漢村', sum=26, run=26, down=0, req=26}, Tersga{aname='白塔村', sum=12, run=12, down=0, req=12}, Tersga{aname='白沙村', sum=8, run=8, down=0, req=8}, Tersga{aname='白石源村', sum=3, run=3, down=0, req=3}, Tersga{aname='百錄村', sum=9, run=9, down=0, req=9}, Tersga{aname='石井村', sum=12, run=12, down=0, req=12}, Tersga{aname='石塘鋪村', sum=3, run=3, down=0, req=3}, Tersga{aname='石弓灣社區(qū)', sum=13, run=13, down=0, req=13}, Tersga{aname='石板村', sum=10, run=10, down=0, req=10}, Tersga{aname='石燕村', sum=2, run=2, down=0, req=2}, Tersga{aname='磚田新村', sum=1, run=1, down=0, req=1}, Tersga{aname='福臨鋪社區(qū)', sum=3, run=3, down=0, req=3}, Tersga{aname='福安村', sum=264, run=264, down=0, req=264}, Tersga{aname='福田村', sum=12, run=12, down=0, req=12}, Tersga{aname='福高村', sum=6, run=6, down=0, req=6}, Tersga{aname='維漢村', sum=4, run=4, down=0, req=4}, Tersga{aname='羅代社區(qū)', sum=3, run=3, down=0, req=3}, Tersga{aname='肖排村', sum=1, run=1, down=0, req=1}, Tersga{aname='脫甲村', sum=22, run=22, down=0, req=22}, Tersga{aname='脫甲社區(qū)', sum=10, run=10, down=0, req=10}, Tersga{aname='花園新村', sum=5, run=5, down=0, req=5}, Tersga{aname='花果村', sum=12, run=12, down=0, req=12}, Tersga{aname='花橋村', sum=11, run=11, down=0, req=11}, Tersga{aname='花橋?yàn)炒?#39;, sum=109, run=109, down=0, req=109}, Tersga{aname='范林村', sum=5, run=5, down=0, req=5}, Tersga{aname='荊華', sum=214, run=214, down=0, req=214}, Tersga{aname='榮合橋社區(qū)', sum=473, run=473, down=0, req=473}, Tersga{aname='榮河村', sum=15, run=15, down=0, req=15}, Tersga{aname='葛家山村', sum=7, run=7, down=0, req=7}, Tersga{aname='蒲塘村', sum=18, run=18, down=0, req=18}, Tersga{aname='蒿塘社區(qū)', sum=2, run=2, down=0, req=2}, Tersga{aname='藍(lán)田新村', sum=17, run=17, down=0, req=17}, Tersga{aname='西山村', sum=16, run=16, down=0, req=16}, Tersga{aname='西湖村', sum=4, run=4, down=0, req=4}, Tersga{aname='觀佳村', sum=8, run=8, down=0, req=8}, Tersga{aname='譚坊新村', sum=11, run=11, down=0, req=11}, Tersga{aname='谷塘村', sum=4, run=4, down=0, req=4}, Tersga{aname='賽頭村', sum=4, run=4, down=0, req=4}, Tersga{aname='赤馬村', sum=12, run=12, down=0, req=12}, Tersga{aname='路口社區(qū)', sum=9, run=9, down=0, req=9}, Tersga{aname='車馬村', sum=15, run=15, down=0, req=15}, Tersga{aname='金井社區(qū)', sum=10, run=10, down=0, req=10}, Tersga{aname='金鳳村', sum=13, run=13, down=0, req=13}, Tersga{aname='金星村', sum=6, run=6, down=0, req=6}, Tersga{aname='金橋村', sum=3, run=3, down=0, req=3}, Tersga{aname='金江新村', sum=18, run=17, down=1, req=18}, Tersga{aname='金牛村', sum=6, run=6, down=0, req=6}, Tersga{aname='金鼎山村', sum=6, run=6, down=0, req=6}, Tersga{aname='金龍村', sum=10, run=10, down=0, req=10}, Tersga{aname='銀龍村', sum=2, run=2, down=0, req=2}, Tersga{aname='錫福村', sum=6, run=6, down=0, req=6}, Tersga{aname='錦繡社區(qū)', sum=10, run=10, down=0, req=10}, Tersga{aname='長安村', sum=20, run=20, down=0, req=20}, Tersga{aname='長春', sum=2, run=2, down=0, req=2}, Tersga{aname='青山村', sum=11, run=11, down=0, req=11}, Tersga{aname='青山鋪社區(qū)', sum=3, run=3, down=0, req=3}, Tersga{aname='青田村', sum=5, run=5, down=0, req=5}, Tersga{aname='飄峰山村', sum=4, run=4, down=0, req=4}, Tersga{aname='高倉村', sum=9, run=9, down=0, req=9}, Tersga{aname='高塘村', sum=16, run=16, down=0, req=16}, Tersga{aname='高岸村', sum=1, run=1, down=0, req=1}, Tersga{aname='魚塘村', sum=5, run=5, down=0, req=5}, Tersga{aname='鹿芝嶺村', sum=13, run=13, down=0, req=13}, Tersga{aname='麻林', sum=322, run=322, down=0, req=322}, Tersga{aname='黃興新村', sum=13, run=13, down=0, req=13}, Tersga{aname='黃橋村', sum=11, run=11, down=0, req=11}, Tersga{aname='鼎功橋村', sum=13, run=13, down=0, req=13}, Tersga{aname='龍華新村', sum=12, run=12, down=0, req=12}, Tersga{aname='龍華村', sum=9, run=9, down=0, req=9}, Tersga{aname='龍泉村', sum=12, run=12, down=0, req=12}, Tersga{aname='龍泉社區(qū)', sum=610, run=610, down=0, req=610}, Tersga{aname='龍王廟村', sum=8, run=8, down=0, req=8}], time=2019-02-13 01:53:27}
POSTMAN進(jìn)行g(shù)et獲取的結(jié)果
{ "msg": "已查詢到163條數(shù)據(jù)", "data_size": 163, "code": 0, "data": [ { "aname": "萬家鋪村", "sum": 10, "run": 10, "down": 0, "req": 10 }, { "aname": "萬年橋", "sum": 4, "run": 4, "down": 0, "req": 4 }, { "aname": "萬龍村", "sum": 16, "run": 16, "down": 0, "req": 16 }, { "aname": "三合村", "sum": 19, "run": 19, "down": 0, "req": 19 }, { "aname": "上華山村", "sum": 6, "run": 6, "down": 0, "req": 6 } ], "time": "2019-02-13 01:55:13" }
原因
因?yàn)锧RestController是組合注解
等于SpringMVC:@Controller+@ResponstBody
package org.springframework.web.bind.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ResponseBody; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Controller @ResponseBody public @interface RestController { String value() default "
Springboot自動轉(zhuǎn)json的出現(xiàn)問題
問題復(fù)現(xiàn)
上代碼:
1、實(shí)體類
package com.example.demo; /** * @author Mr.xiong * #description model * #date: 2022/4/8 10:08 * @version v1.0.0 * @since jdk8 */ public class model { private String a; private String b; private boolean e; private Boolean f; public Boolean getF() { return false; } public boolean isE() { return false; } public boolean areC(){ return false; } public Boolean isD(){ return null; } public String getA() { return a; } public void setA(String a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } }
2、controller類
package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; /** * @author Mr.xiong * #description web * #date: 2022/4/8 10:08 * @version v1.0.0 * @since jdk8 */ @RestController public class web { @GetMapping public R demo(){ model m1 = new model(); m1.setA("a1"); m1.setB("b1"); model m2 = new model(); m2.setA("a2"); m2.setB("b2"); List<model> models = new ArrayList<>(); models.add(m1); models.add(m2); return R.success(200,"success",models); } }
3、統(tǒng)一返回風(fēng)格消息類
package com.example.demo; import java.util.Objects; /** * @author Mr.xiong * #description R * #date: 2022/4/8 10:08 * @version v1.0.0 * @since jdk8 */ public class R { private Integer code; private String msg; private Object obj; public R(Integer code, String msg) { this.code = code; this.msg = msg; } public R(Integer code, String msg, Object obj) { this.code = code; this.msg = msg; this.obj = obj; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public Object getObj() { return obj; } public void setObj(Object obj) { this.obj = obj; } @Override public String toString() { return "R{" + "code=" + code + ", msg='" + msg + '\'' + ", obj=" + obj + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; R r = (R) o; return code.equals(r.code) && msg.equals(r.msg) && obj.equals(r.obj); } @Override public int hashCode() { return Objects.hash(code, msg, obj); } public static R success(Integer code,String msg){ return new R(code, msg); } public static R success(Integer code,String msg,Object obj){ return new R(code, msg,obj); } }
訪問接口獲得的數(shù)據(jù)如下:
問題分析及解決辦法
public Boolean isD(){ return null; }
可以看到,我們有這個方法,但是沒有D這個屬性,但是卻實(shí)實(shí)在在打印了這個值。原因是因?yàn)閟pringboot自動轉(zhuǎn)json把他當(dāng)做了一個屬性。這是為什么呢?是因?yàn)椴紶栔档膅etter事實(shí)上boolean的getter方法就是 isXxxx,因此出現(xiàn)此問題也就不奇怪了解決方法,不要使用isXxx就可以避免此類問題。當(dāng)我把isD修改為D之后,就解決了。
如下:
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
jsch中ChannelShell與ChannelExec的區(qū)別及說明
這篇文章主要介紹了jsch中ChannelShell與ChannelExec的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Java實(shí)現(xiàn)多個sheet頁數(shù)據(jù)導(dǎo)出功能
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多個sheet頁數(shù)據(jù)導(dǎo)出功能的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03SpringCloud中的Feign遠(yuǎn)程調(diào)用接口傳參失敗問題
這篇文章主要介紹了SpringCloud中的Feign遠(yuǎn)程調(diào)用接口傳參失敗問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03Spring boot從安裝到交互功能實(shí)現(xiàn)零基礎(chǔ)全程詳解
這篇文章主要介紹了Spring boot從安裝到交互功能得實(shí)現(xiàn)全程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Spring中@Validated和@Valid區(qū)別淺析
@Valid是javax.validation里的,?@Validated是@Valid?的一次封裝,是Spring提供的校驗(yàn)機(jī)制使用,下面這篇文章主要給大家介紹了關(guān)于Spring中@Validated和@Valid區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-04-04spring boot 項(xiàng)目利用Jenkins實(shí)現(xiàn)自動化部署的教程詳解
這篇文章主要介紹了spring boot 項(xiàng)目利用Jenkins實(shí)現(xiàn)自動化部署的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07