问题描述
我正在读取REST-API,该API以以下方式返回结果
{
"total": 2,"results": [
{
"name": "object-name","id": 123
},{
"name": "another-object-name","id": 321
}
]
}
除了属性name
和id
之外,results
的元素还包括其他属性,具体取决于对象类型。 results
中的所有对象都是同一类型。没有属性指示元素是什么对象类型。
我正在使用Apache Beam,并且正在将Autovalue
与Jacksonjson一起使用来解析这些对象。例如,对象Circle
如下所示:
@JsonDeserialize(builder = Autovalue_Circle.Builder.class)
@Autovalue
public abstract class Circle implements Serializable {
public static Circle.Builder builder() {
return Circle.Builder.builder();
}
@JsonProperty("name")
public abstract String name();
@JsonProperty("id")
public abstract int id();
@JsonProperty("radius")
public abstract double radius();
@JsonPOJOBuilder(buildMethodName = "build")
@Autovalue.Builder
public abstract static class Builder {
@JsonCreator
public static Builder builder() {
return new Autovalue_Circle.Builder();
}
@JsonProperty("name")
abstract Builder name(String name);
@JsonProperty("id")
abstract Builder id(int id);
@JsonProperty("radius")
abstract Builder radius(double radius);
abstract Circle build();
}
}
我知道results
中包含什么类型。例如,从/api/circles
发出GET请求将返回一个圈子列表。
我正在使用Apache Beam管道来处理此问题:
// jsonData is a PCollection<String>,which holds JSONs
PCollection<ApiWrapperObj> data = jsonData.apply(ParseJsons.of(ApiWrapperObj.class).setCoder(SerializableCoder.of(ApiWrapperObj.class));
所以我需要为包装对象创建一个反序列化器。我有办法使用通用类吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)