我找不到在POJO中序列化/反序列化枚举的方法。我发现的大多数答案仅涉及可以更改的枚举。我无法更改枚举。
这是我的POJO的一个例子。
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import javax.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.http.HttpStatus;
@Data
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
public class TitleRatingCheckItemResponse {
private String titleId;
@NotNull private Status status;
@NoArgsConstructor
@Data
public static class Status {
@NotNull
private HttpStatus code;
}
}
当我将对象序列化为JSON时,这是我得到的示例
{
"status": {
"code": "OK"
},
"titleId": "titl_doc-1"
}
我想要的是一个像下面这样的JSON结构。
{
"status": {
"code": "200"
},
"titleId": "titl_doc-1"
}
要获得所需的JSON输出,我必须更改HttpStatus
。这显然是不可能的,因为我没有HttpStatus
的源代码。我有什么办法吗?
答案 0 :(得分:1)
创建一个类
suduko = [
[1, 2, 3],
[2, 3, 1],
[3, 1, 2]
]
请参见StdSerializer
docs。还有另一个扩展的StdScalarDeserializer<HttpStatus>
。
在创建它的任何地方将其注册到def check_row(problem, row_number):
seen = list()
for cell in problem[row_number]:
if cell in seen:
return "Not ok"
seen.append(cell)
return "OK!"
def check_column(problem, column_number):
# up to you
pass
print(check_row(sudoku, 0))
print(check_row(sudoku, 1))
print(check_row(sudoku, 2))
中
product_extras_id | product_id | extras_id
------------------------------------------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 1
5 | 2 | 2
6 | 2 | 3
7 | 3 | 1
8 | 3 | 2
9 | 3 | 3
或者,如果您只想针对此字段而不是所有public class HttpStatusSerializer extends StdSerializer<HttpStatus> {
public HttpStatusSerializer() {
super(HttpStatus.class);
}
@Override
public void serialize(HttpStatus value, JsonGenerator gen, SerializerProvider serializers) {
gen.writeString(String.valueOf(value.code())); // or whatever you want
}
}
使用自定义序列化器,则:
ObjectMapper