java - ArrayList<对象> JSON

标签 java json spring

我在后端有这两个类:

产品

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"
    }
  ]
}

关于java - ArrayList<对象> JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39637287/

相关文章:

java - 无法在 Iceweasel 上运行 java 8u71

java - Json 输出生成双引号中的数字,如字符串

python - 通过 Python 读写 JSON

java - Spring @Transactional 方法错误处理

Spring boot application.properties maven 多模块项目

java - 连接到 VPN 时,Maven 从发布 URL 下载快照

java - 每隔这么多字符留出空格

java - 在 h :inputTextarea tag JSF(2. 0 中禁用复制粘贴功能)

arrays - 使用 VBA 和 JSON 解析嵌套数组

java - 如何在 spring-boot 项目中的 pom.xml 添加非 spring-boot 依赖