我想要创建一个json对象的值"3D旅游“,”视频“,”仅照片“等。你可以找到下面的枚举类。我怎样才能实现这一点?
package com.padgea.listing.application.dto;
public enum General implements Catalogue {
Tour("3D Tour"),
Videos("Videos"),
Photos_Only("Photos Only"),
Price_Reduced("Price Reduced"),
Furnished("Furnished"),
Luxury("Luxury");
private final String value;
General(String value) {
this.value = value;
}
public String getValue() {
return value;
}}
我需要一个像这样的输出{一般:"3D旅游“,”视频“,”仅照片“,等等}
发布于 2021-12-08 08:37:48
这将返回包含所有值的字符串列表。
enum General implements Catalogue {
Tour("3D Tour"),
Videos("Videos"),
Photos_Only("Photos Only"),
Price_Reduced("Price Reduced"),
Furnished("Furnished"),
Luxury("Luxury");
private final String value;
General(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public static List<String> valuesList() {
return Arrays.stream(General.values())
.map(General::getValue)
.collect(Collectors.toList());
}
}在一个层次上你会做一些类似的事情
myJson.put("General", General.valuesList())输出将是
{
"General": ["3D Tour","Videos","Photos Only"]
}发布于 2021-12-08 08:42:18
有效的JSON如下所示
{
"General": ["3D Tour","Videos","Photos Only"]
}如果要使用Jackson库创建JSON,则需要创建如下类:
public class GeneralDTO {
@JsonProperty("General")
private String[] general;
...
}然后需要创建GeneralDTO对象。
您可以在这样的数组中获取所有枚举值
String[] generalArray = Arrays.stream(General.values())
.map(st -> st.getValue())
.toArray(String[]::new);然后,使用方法writeValueAsString of ObjectMapper类(杰克逊库的一部分),您可以从GeneralDTO对象中获取JSON字符串。
为了简化您可以使用Map<String, String[]>而不是GeneralDTO
Map<String, String[]> generalObject = new HashMap<>;
generalObject.put("General", generalArray);
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(generalObject);https://stackoverflow.com/questions/70271717
复制相似问题