如何将JSON数组反序列化到Apache beam PCollection<;javaObject>;
我有这样的数据如何将JSON数组反序列化到Apache beam PCollection<;javaObject>;,java,apache-beam,json-deserialization,Java,Apache Beam,Json Deserialization,我有这样的数据 [{"ProjectId":1476401625,"ProjectName":"This is project name","ProjectPostcode":4178},{"ProjectId":2343,"ProjectName":"This is project 2 name","ProjectPostcode":5
[{"ProjectId":1476401625,"ProjectName":"This is project name","ProjectPostcode":4178},{"ProjectId":2343,"ProjectName":"This is project 2 name","ProjectPostcode":5323}]
我需要将其反序列化为Java对象,我使用以下代码:
PCollection<Project> deserialisedProjectObject = projectFile.apply("Deserialize Projects", ParseJsons.of(Project.class))
.setCoder(SerializableCoder.of(Project.class));
如果我将代码更改为:
PCollection<Project[]> deserialisedProjectObject = projectFile.apply("Deserialize Projects", ParseJsons.of(Project[].class))
.setCoder(SerializableCoder.of(Project[].class));
PCollection deserialisedProjectObject=projectFile.apply(“反序列化项目”,ParseJsons.of(Project[].class))
.setCoder(SerializableCoder.of(Project[].class));
运行程序可以反序列化它,但我需要这一行来返回项目集合;不是项目数组的集合您从项目[]对象开始,因此解析是正确的。要从该对象提取项目对象,只需在ParseJson之后应用FlatMap转换,输出数组中的元素 以及您可能希望查看的ParseJson:
这是一个行对象,您可以将其用作一个提供了许多良好功能的对象,请参阅。如果您需要管道中的实际POJO以及行对象,您可以利用它将其转换为POJO对象。如果没有正确的格式,很难读取它,您可以将``用于json。这样你会更加注意你的问题
PCollection<Project[]> deserialisedProjectObject = projectFile.apply("Deserialize Projects", ParseJsons.of(Project[].class))
.setCoder(SerializableCoder.of(Project[].class));