【问题标题】:convert an array to a list for spring将数组转换为弹簧列表
【发布时间】:2016-06-10 01:45:46
【问题描述】:

我使用 spring boot、jquery 和 spring rest 控制器

我尝试保存对象列表。

我发送到服务器

{"defaultConfigDto":[{"fieldName":"","defaultConfigId":"","fieldValue":"0.2"},{"defaultConfigId":"","fieldName":"","fieldValue":"0.3"}]}

在我的休息控制器中,我有

@RequestMapping(value = "/tax", method = RequestMethod.POST)
public Long saveTax(@RequestBody List<DefaultConfigDto> defaultsConfigs) {
    return defaultConfigService.saveTaxe(defaultsConfigs);
}

我的 DefaultConfigDto 对象

public class DefaultConfigDto {
    private Long defaultConfigId;
    private String fieldName;
    private String fieldValue;
}

在服务器中我看到了这个错误

com.fasterxml.jackson.databind.JsonMappingException: 不能 从 START_OBJECT 令牌中反序列化 java.util.ArrayList 的实例

我的html

<div class="form-group">
    <input type="hidden" id="defaultConfigDto[0].fieldName" name="defaultConfigDto[0].fieldName">
    <input type="hidden" id="defaultConfigDto[0].defaultConfigId" name="defaultConfigDto[0].defaultConfigId">
    <label for="tvqRate" class="col-sm-2 control-label">Tvq</label>
    <div class="col-sm-10">
        <input type="text" class="form-control" id="tvqRate" name="defaultConfigDto[0].fieldValue" placeholder="tax 1">
    </div>
</div>
<div class="form-group">
    <input type="hidden" id="defaultConfigDto[1].defaultConfigId" name="defaultConfigDto[1].defaultConfigId">
     <input type="hidden" id="defaultConfigDto[1].fieldName" name="defaultConfigDto[1].fieldName">
     <label for="tpsRate" class="col-sm-2 control-label">Tps</label>
     <div class="col-sm-10">
         <input type="text" class="form-control" id="tpsRate" name="defaultConfigDto[1].fieldValue" placeholder="tax 2">
      </div>
</div>

我需要修改什么才能只获取列表?

【问题讨论】:

  • 你的 json 键应该是“defaultsConfigs”吗?
  • 您的 JSON 看起来像一个带有 defaultConfigDto 字段的对象,其中 defaultConfigDto 字段是 DefaultConfigDto 对象的数组。您可能需要创建一个类public class DefaultConfigs { private List&lt;DefaultConfigDto&gt; defaultConfigDto; }

标签: java jackson


【解决方案1】:

你的数据是这样的:

{"defaultConfigDto":[{"fieldName":"","defaultConfigId":"","fieldValue":"0.2"},      {"defaultConfigId":"","fieldName":"","fieldValue":"0.3"}]}

你的@RequestBody 类型应该是这样的:

public Long saveTax(@RequestBody Map<String, List<DefaultConfigDto>> defaultsConfigs) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-04
    • 2016-11-22
    • 2011-11-26
    • 1970-01-01
    相关资源
    最近更新 更多