假设我已将以下对象序列化为json字符串:
class Person {
public final String name;
public Person(String name) { this.name = name; }
}
Person p = new Person("Bob Falaway");
JsonObject json = gson.toJsonTree(p, Person.class).getAsJsonObject();
现在我想反序列化它,但是我想把名称分成两个字段,firstName
和lastName
。我该怎么做呢?
我希望最终的结果是类似于:
class RefinedPerson {
public final String firstName;
public final String lastName;
public String toString() { return String.format("%s %s", firstName, lastName); }
}
这对Gson有可能吗?
为类型注册您自己的JsonSerializer
(或者TypeAdapter
,如果您愿意的话)?
类似的东西:
@JsonAdapter(PersonSerializer.class)
class Person {
private final String name;
Person(final String name) {
// Some validation...
this.name = name;
}
String getName() {
return this.name;
}
}
您的serialiser看起来像:
class PersonSerializer implements JsonSerializer<Person> {
@Override
public JsonObject serialise(final Person src,
final Type personType,
final JsonSerializationContext context) {
final JsonObject json = new JsonObject();
final String[] names = src.getName().split(" ");
// Some validation...
json.addProperty("firstName", names[0]);
json.addProperty("lastName", names[1]);
return json;
}
}
假设我有一个Java类... 我想将这个单独的类与两个不同的服务一起使用。然而,这两种服务在返回数据的方式上有所不同。 ...还有...
问题内容: 我已经看到了一些类似于我的问题的答案,但我无法使它们起作用。我的查询中有几个日期字段,它们返回日期和时间,例如2014年7月1日12:00:00 AM。有什么办法可以让字段显示2014年7月1日? 我基本上想将两个日期字段缩减为较短的日期格式减去时间。 提前致谢! 问题答案: 使用to_char函数:
问题内容: 我有三个表,, 与下面的数据 页 标签 页面标签 我想在一个查询中获得一个包含SQL每一页的对应标签名的字符串。这是我想要的输出。 SQL可能吗? 我正在使用MySQL。尽管如此,如果可能的话,我希望有一个独立于数据库供应商的解决方案。 问题答案: 塞尔吉奥·德尔阿莫(Sergio del Amo): 但是,我没有没有标签的页面。我想我需要用左外部联接编写查询。 不是一个非常漂亮的查询
我把这三门课分别放在不同的文件中 我有下面的映射器 这目前仅映射lastName并起作用,我想将Book中的作者字符串映射为 我怎么能这么做?我在MapStruct文档中找不到任何东西。
此字段必须在mongo数据库中,由等差日期表示。 我可以为整个Pojo编写一个转换器,但因为它只是25个字段中的一个,所以没有太大意义,而且当一个字段发生变化或添加更多字段时,它是错误的另一个位置。 是否有一种方法调用默认的转换器服务,并在默认的转换服务之后更改其他2个服务,这将对性能产生很大影响。还是有一个默认的转换器接口要覆盖? 是的,我也可以写一个LongToDate转换器,但这将影响所有的
“想要解决方案B” 有什么办法可以做到这一点吗?