Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将JSON数组反序列化到Apache beam PCollection<;javaObject>;_Java_Apache Beam_Json Deserialization - Fatal编程技术网

如何将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));