无法将json字符串绑定到java字符串

时间:2019-01-28 16:56:42

标签: java json spring-boot

我正在尝试将json字符串传递给(POJO)java字符串,但是在我的控制器中,我没有将该json字符串作为java字符串获取。

在前端,

<form th:action="@{/create/ads}" th:object="${createAds}" method="post">
    <div class="allWrap">
        <ul class="dropList odaberiteMarku" th:field="${brand}">

        </ul>
    </div>

    <div class="allWrap mt-s">
        <ul class="dropList odaberiteModel" th:field="${model}">

        </ul>
    </div>
</form>

在控制器中,

@RequestMapping(value="/create/ads", headers="Accept=application/json", method=RequestMethod.POST)
public String submitForm(@RequestBody @ModelAttribute CreateAds ads, BindingResult result, Model model) {
    if (result.hasErrors()) {
        return "test";
    }
    System.out.println(ads.getBrand()+", "+ads.getModels());
    return "successful";
}

在模型课中

public class CreateAds {
    private String brand;
    private String models;
    //other variables
    //all getters and setters 
}

在我的json文件中。

[
  {
    "brand": "Acura",
    "models": [
      "2.2CL",
      "2.3CL",
      "3.0CL",
      "TL",
      "TSX",
      "Vigor",
      "ZDX"
    ]
  }
]

前端:我有一个外部json文件,该文件用于汽车制造商和基于汽车制造商的汽车模型。在前端工作正常。

在后端:我正在尝试将json字符串绑定到普通字符串,例如json品牌字符串应为java品牌字符串,而models字符串应为java models字符串。

我认为,我无法将json字符串正确绑定到java字符串,这就是为什么我得到空值的原因。那我该如何解决这个问题呢?

谢谢。

2 个答案:

答案 0 :(得分:0)

除了托马斯的评论(对不起,我还不能发表评论): 您的端点接受一个CreateAds类的对象,并且您正在显示名为Ads类的POJO声明。

答案 1 :(得分:0)

我不会谈论您的UI代码。

控制器:

@PostMapping("/create/ads")
public String submitForm(@RequestBody CreateAds ads, BindingResult result, Model model){
    if (result.hasErrors()) {
        return "test";
    }
    System.out.println(ads.getBrand()+", "+ads.getModels());
    return "successful";
}

创建广告:

public class CreateAds {
private String brand;
private ArrayList<String> models = new ArrayList<>();

   public String getBrand() {
        return brand;
   }

   public void setBrand(String brand) {
       this.brand = brand;
   }

   public ArrayList<String> getModels() {
      return models;
   }

   public void setModels(ArrayList<String> models) {
      this.models = models;
   }
}

我发现您的JSON对象也是错误的。请参考下面的JSON对象。

{
"brand": "Acura",
    "models": [
     "2.2CL",
     "2.3CL",
     "3.0CL",
     "TL",
     "TSX",
     "Vigor",
     "ZDX"
   ]
 }

我使用POSTMan并尝试过。它是工作代码。试试吧。