使用Jackson JSON库,是否可以将自定义对象转换为字符串并接收字符串?
我想有一个自定义对象,说MyDate将只有一个toString方法和一些构造函数,但我希望该对象接受'字符串'数据,并写入字符串数据。使用Jackson JSON库,是否可以将自定义对象转换为字符串并接收字符串?
例如,我会Java代码:
public class MyDate {
...
}
public class RootJson {
private MyDate myDate;
private String id;
}
And the the json would be:
{
"myDate": "2015000000",
"id": "2014000aabc"
}
我怎样才能做到这一点?
根据你的评论,你是否建议你想从Jackson的字符串中序列化和反序列化MyDate?这可以通过JsonDeserilizer和JsonSerilizer完成。这里有一个例子:
public class JsonMyDateDeserializer extends JsonDeserializer<MyDate> {
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
String stringValue = jsonParser.getText();
// Convert it to a MyDate how ever you want.... just example below
return new MyDate(stringValue)
}
}
而要做到这一点的回报(消毒指明MyDate到JSON):
public class JsonMyDateSerializer extends JsonSerializer<MyDate> {
@Override
public void serialize(MyDate myDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
// Just an example.... convert your myDate something the jsonGenerator can handle
jsonGenerator.writeString(myDate.toString());
}
}
,那么你需要注释你的根类是这样的:
public class RootJson {
@JsonSerialize(using = JsonMyDateSerializer.class)
@JsonDeserialize(using = JsonMyDateDeserializer.class)
private MyDate myDate;
private String id;
}
这是否覆盖它?
这是简单的JSON转换。我的意思是在根级别的类定义中,我如何使用自定义对象。请参阅更新示例 –
您的更新代码看起来正确,谢谢。不知道为什么这个问题被压低了。 –
那里我upvoted :) –
Jackson库的目的是为了执行Java JSON转换。你能否进一步解释你正在努力完成什么?如果你只需要接受字符串并写入String为什么涉及杰克逊?请详细说明。 – maheeka
我更新了示例,如果看到myDate字段,我不想使用类定义MyDate的字符串。 –
我更新了我的答案,这是否覆盖了它? –