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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

未找到接口 java.util.List Rest API Spring boot 的主構(gòu)造函數(shù)

未找到接口 java.util.List Rest API Spring boot 的主構(gòu)造函數(shù)

繁華開滿天機 2022-06-15 17:16:32
我正在將請求正文傳遞給郵遞員的 POST 請求,類似于: "name":"Mars","artifacts":[   {      "elements":[         {            "name":"carbon",            "amount":0.5,            "measurement":"g"         }      ],      "typeName":"typeA"   },   {      "elements":[         {            "name":"hydrogen",            "amount":0.2,            "measurement":"g"         }      ],      "typeName":"typeB"   }]rest 控制器中的 create 方法如下所示。  @RequestMapping("/create")  public Planet create(@RequestBody Planet data) {      Planet mars = planetService.create(data.getName(),data.getArtifacts());      return mars;Planet 及其所有嵌套對象都有一個默認構(gòu)造函數(shù),例如:public Planet() {}但是,由于缺少默認構(gòu)造函數(shù),我無法創(chuàng)建新的行星對象。請幫忙!編輯:行星類public class Planet {@JsonProperty("name")private String name;@Field("artifacts")private List<Artifact> artifacts;public Planet() {}public Planet(String name, List<Artifact> artifacts){this.name = name;this.artifacts = artifacts;}//setters and getters}神器類:public class Artifact() {@Field("elements")private List<Element> elements;@JsonProperty("typeName")private String typeName;public Artifact() {}public Artifact(String typeName, List<Element> elements){this.typeName = typeName;this.elements = elements;}}元素類:public class Element() {@JsonProperty("elementName")private String name;@JsonProperty("amount")private double amount;@JsonProperty("measurement")private String measurement;public Element() {}public Element(String name, double amount, String measurement){//assignments}}
查看完整描述

4 回答

?
眼眸繁星

TA貢獻1873條經(jīng)驗 獲得超9個贊

當(dāng)我忘記@RequestBody參數(shù)之前時,我遇到了同樣的錯誤


  @RequestMapping("/create")

  public Planet create(@RequestBody Planet data) {


查看完整回答
反對 回復(fù) 2022-06-15
?
回首憶惘然

TA貢獻1847條經(jīng)驗 獲得超11個贊

我不明白您面臨的問題是什么,但我可以立即看到一個錯誤,因此猜測這是您面臨的問題,我將為您提供解決方案。


創(chuàng)建一個與您的 json 數(shù)據(jù)結(jié)構(gòu)匹配的類,如下所示:


Class PlanetData {

    private String name;

    private List<Planet> artifacts;


    public PlanetData(String name, List<Planet> artifacts){

        name = name;

        artifacts = artifacts;

    }


    // include rest of getters and setters here.

}

然后你的控制器應(yīng)該是這樣的?;旧?,您需要將@RequestBody要從請求 JSON 中接收的所有參數(shù)放入其中。之前您只@RequestBody輸入名稱參數(shù)而不是工件參數(shù),并且由于請求正文只能使用一次,因此您需要一個包裝類來使用單個@RequestBody注釋接收完整的請求正文。


@RequestMapping("/create")

  public String create(@RequestBody PlanetData data) {

      Planet mars = planetService.create(data.getName(),data.getArtifacts());

      return mars.toString();

  }

編輯:查看 Planet 類,它還需要一些修改


public class Planet {

private String typeName; // key in json should match variable name for proper deserialization or you need to use some jackson annotation to map your json key to your variable name.

private List<Element> elements;


public Planet() {}


public Planet(String typeName, List<Element> elements)

{

this.typeName = typeName;

this.elements = elements;

}

//setters and getters. Remember to change your setters and getter from name to typeName.


}


查看完整回答
反對 回復(fù) 2022-06-15
?
翻閱古今

TA貢獻1780條經(jīng)驗 獲得超5個贊

我想,它正在嘗試調(diào)用new List()沒有構(gòu)造函數(shù)的調(diào)用。嘗試ArrayList在您的簽名中使用。

如果它以這種方式工作,那么您已經(jīng)發(fā)現(xiàn)了錯誤。然后重新考慮調(diào)用方法的概念,因為您通常希望避免在方法簽名中使用 List 的實現(xiàn)


查看完整回答
反對 回復(fù) 2022-06-15
?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

你應(yīng)該寫如下:


...

public String create(@RequestBody JSONObject requestParams) {

      String name=requestParams.getString("name");

      List<Planet> planetArtifacts=requestParams.getJSONArray("artifacts").toJavaList(Planet.Class);

...


查看完整回答
反對 回復(fù) 2022-06-15
  • 4 回答
  • 0 關(guān)注
  • 306 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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