我在后端有这两个类:

产品

public class Produto implements Serializable {

    @Transient
    @JsonSerialize
    @JsonDeserialize
    private Set<Filial> filials = new HashSet<>();

//more fields
//getters and setters




public class Filial implements Serializable {

@Id
private Long id;

@Column(name = "nm_filial")
private String nmFilial;

//more fields
//getters and setters


filiais属性不是数据库字段,而是通过以下方式接收其值:

 @RequestMapping(value = "/produtos/{id}",
    method = RequestMethod.GET,
    produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<Produto> getProduto(@PathVariable Long id) {

    Produto produto = produtoService.findOne(id);

    Set<Filial> filials = produtoFilialService.findFiliaisByIdProduto(produto.getId());
    produto.setFilials(filials);

    return Optional.ofNullable(produto)
        .map(result -> new ResponseEntity<>(
            result,
            HttpStatus.OK))
        .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}


但是,当在前端调用此类时,返回的JSON如下所示:

{"id":1, "filials":[[1,"A"],[2,"AS"]]}


我如何返回这样的对象数组:

{"id":1, "filials":[{"id":1, "nmFilial":"A"},{"id":2, "nmFilial":"AS"}]}


最佳答案

这里使用以下配置:

在我的实体中:

    @Transient
    @JsonSerialize
    @JsonDeserialize
    private List<Filial> filiais = new ArrayList<>();


孝顺班:

import java.io.Serializable;


public class Filial implements Serializable{

    private Long id;

    private String nmFilial;

    public Filial(){}

    public Filial(Long id, String nmFilial){
        this.id = id;
        this.nmFilial = nmFilial;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNmFilial() {
        return nmFilial;
    }

    public void setNmFilial(String nmFilial) {
        this.nmFilial = nmFilial;
    }
}


在存储库上:

@Query(value = "SELECT pf.filial FROM ProdutoFilial pf "
        + "where pf.produto.id = :idProduto")
ArrayList<Filial> findFiliaisByIdProduto(@Param("idProduto") Long idProduto);


在我的服务范围内(仅供测试)

produto.getFiliais().add(new Filial(1l, "a"));
produto.getFiliais().add(new Filial(2l, "b"));


和工作:

...
  "filiais": [
    {
      "id": 1,
      "nmFilial": "a"
    },
    {
      "id": 2,
      "nmFilial": "b"
    }
  ]
}

09-04 06:45
查看更多