gpt4 book ai didi

java - jackson 键/值对的序列化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:04 24 4
gpt4 key购买 nike

我有课

class Foo {
String key;
String value;
}

并想将其序列化为 "<content of key>":"<content of value>"我怎样才能做到这一点(以及如何将 "myKey":"myVal" 反序列化为 Foo 对象?

我正在尝试使用

@JsonValue
public String toString() {
return "\"" + key + "\":\"" + value + "\"";
}

但显然最终引号过多。

@JsonValue
public String toString() {
return key + ":" + value;
}

也不起作用,因为它没有创建足够的引号。

最佳答案

我找到了一种方法,就是像这样使用 JsonSerializer:

public class PropertyValueSerializer extends JsonSerializer<Foo> {

@Override
public void serialize(Foo property_value, JsonGenerator jsonGenerator,
SerializerProvider serializerProvider) throws IOException, JsonProcessingException {

jsonGenerator.writeStartObject();
jsonGenerator.writeFieldName(property_value.getKey());
jsonGenerator.writeString(property_value.getValue());
jsonGenerator.writeEndObject();
}

Foo 类需要了解以下内容:

@JsonSerialize(using = PropertyValueSerializer.class)
public class Foo {

反序列化非常相似:

public class PropertyValueDeserializer extends JsonDeserializer<PROPERTY_VALUE> {    

@Override
public Foo deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException, JsonProcessingException {

String tmp = jsonParser.getText(); // {
jsonParser.nextToken();
String key = jsonParser.getText();
jsonParser.nextToken();
String value = jsonParser.getText();
jsonParser.nextToken();
tmp = jsonParser.getText(); // }

Foo pv = new Foo(key,value);
return pv;
}

这也需要在 Foo 类上进行注释:

@JsonSerialize(using = PropertyValueSerializer.class)
@JsonDeserialize(using = PropertyValueDeserializer.class)
public class Foo implements Serializable{

关于java - jackson 键/值对的序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5430524/

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