第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Java - 對(duì)象映射器 - 要列出的數(shù)字的 JSON 數(shù)組<Long>

Java - 對(duì)象映射器 - 要列出的數(shù)字的 JSON 數(shù)組<Long>

縹緲止盈 2021-11-11 17:39:32
在我的前端,我發(fā)送了這個(gè) JSON:"ids": [ 123421, 15643, 51243],"user": {   "name": "John",   "email": "john@sovfw.com.br" }下面是我的 Spring 端點(diǎn):@PostMapping(value = "/sendToOficial")public ResponseEntity<?> sendToOficial(@RequestBody Map<String, Object> payload) {ObjectMapper mapper = new ObjectMapper();List<Long> pointsIds = mapper.convertValue( payload.get("pointsIds"), List.class );UsuarioDTO autorAlteracao = mapper.convertValue(payload.get("user"), UsuarioDTO.class);for (Long idPoint : pointsIds) { ... }但是我收到了一個(gè) Cast Exception,因?yàn)樗荒軐?Integer 轉(zhuǎn)換為 Long。我無(wú)法將“ids”數(shù)字接收為整數(shù),我想接收為長(zhǎng)整數(shù)。請(qǐng)問(wèn),我怎么能這樣?
查看完整描述

3 回答

?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

首先,定義用于映射請(qǐng)求對(duì)象的 POJO:


public class RequestObj implements Serializable{


    private List<Long> ids;


    private UsuarioDTO user;


    /* getters and setters here */


}


public class UsuarioDTO implements Serializable{


    private String name;

    private String email;


    /* getters and setters here */


}

然后修改您的端點(diǎn):


@PostMapping(value = "/sendToOficial")

public ResponseEntity<?> sendToOficial(@RequestBody RequestObj payload) {

通過(guò)這種方式,您也不需要使用ObjectMapper. 就打電話(huà)payload.getIds()。


還要考慮這樣,如果有效負(fù)載發(fā)生變化,您只需要更改RequestObj定義,而使用ObjectMapper會(huì)強(qiáng)制您以一種重要的方式更新端點(diǎn)。將有效載荷表示與控制邏輯分開(kāi)會(huì)更好也更安全。


查看完整回答
反對(duì) 回復(fù) 2021-11-11
?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

在jackson-databind-2.6.x及更高版本中,您可以使用配置功能ObjectMapper將低類(lèi)型int值(適合 32 位的long值)配置為序列化值DeserializationFeature#USE_LONG_FOR_INTS:


@PostMapping(value = "/sendToOficial")

public ResponseEntity<?> sendToOficial(@RequestBody Map<String, Object> payload) {


    ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature .USE_LONG_FOR_INTS, true);

    List<Long> pointsIds = mapper.convertValue( payload.get("pointsIds"), List.class );

    UsuarioDTO autorAlteracao = mapper.convertValue(payload.get("user"), UsuarioDTO.class);


    for (Long idPoint : pointsIds) { // ... }


}


查看完整回答
反對(duì) 回復(fù) 2021-11-11
?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您只想讓映射器讀入List<Long>,請(qǐng)使用此技巧通過(guò)子類(lèi)化獲取完整的泛型類(lèi)型信息。


例子


ObjectMapper mapper = new ObjectMapper();

List<Long>listOfLong=mapper.readValue("[ 123421, 15643, 51243]" ,

                    new TypeReference<List<Long>>() {

                    });

System.out.println(listOfLong);

印刷


[123421, 15643, 51243]


查看完整回答
反對(duì) 回復(fù) 2021-11-11
  • 3 回答
  • 0 關(guān)注
  • 225 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)