gpt4 book ai didi

java - 使用 GSON 和 Hibernate Entity 创建自定义 JSON

转载 作者:行者123 更新时间:2023-11-30 07:20:39 31 4
gpt4 key购买 nike

我有以下 Hibernate 实体:

@Entity
public class DesignActivity implements Serializable {

@Id
@Expose
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;


@Version
@Column(name = "version")
private int version;

@Expose
@NotEmpty
@NotNull
private String name;


@NotNull
@OneToMany (mappedBy = "designActivity", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
private Set<Cost> costs = new HashSet<Cost>();

// getter and setter
}

还有以下 GSON 代码,用于通过 JAX-RS 返回 JSON 形式的实体:

BaseDesign baseDesign = em.find(BaseDesign.class, id);

Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
return Response.ok(gson.toJson(baseDesign)).build();

返回的 JSON 如下:

{
"id":1,
"name":"Sew Collar",
"costs":[
{
"value":"1.05"
},
{
"value":"1.2"
}
]
}

在上面的 JSON 中,它返回了一个成本数组,但我需要的是仅返回第一个“成本”,如下所示:

{
"id":1,
"name":"Sew Collar",
"cost":{
"value":"1.05"
},
}

如何实现这一目标?

谢谢!

最佳答案

我有以下建议:

1) 请创建以下自定义 JsonSerializer 以排除 成本 并包含 成本:

import java.lang.reflect.Type;
import java.util.List;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

public class CustomSerializer implements JsonSerializer<BaseDesign> {
@Override
public JsonElement serialize(BaseDesign src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject object = new JsonObject();
object.addProperty("id", src.getId());
object.addProperty("name", src.getName());
List<Cost> listOfCost = src.getCosts();
if (listOfCost != null && listOfCost.size() != 0) {
object.addProperty("cost", listOfCost.get(0).getValue());
object.remove("costs");
}
return object;
}

}

2) 按以下方式创建 gson 对象:

Gson gson = new GsonBuilder()
.registerTypeAdapter(BaseDesign.class, new CustomSerializer())
.excludeFieldsWithoutExposeAnnotation()
.create();

关于java - 使用 GSON 和 Hibernate Entity 创建自定义 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37627699/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com