如何在 java 中创建 JSONArray

How create a JSONArray in java

我有 2 个 java 函数: listeFilesHdfs return 存储在 HDFS 中的文件列表,例如:

如果你备注一下,HDFS里面存储的文件内容是JSON格式,例如:

{
"name":"Name",
"type":"string"
},
{
"name":"Version",
"type":"string"
},
{
"name":"r_service",
"type":"string"
},
{
"name":"r_timestamp",
"type":"long"
},

我创建了下面的函数来调用上面的两个函数(一个 return 文件列表和第二个打开路径):

如何修改我的函数以读取文件内容并将每个文件内容添加到 JSON 数组和 return JSON 数组? 谢谢

根据您的评论回答,您正在寻找一种方法将文件的 json 内容解析为 javax.json-JsonArray.

答案是classJsonReader。 根据文档:

JsonReaderFactory factory = Json.createReaderFactory(...);
JsonReader reader = factory.createReader(...);
JsonStructure content = Jsonreader.read();

然后 JsonStructure 可以是 JsonArray(您可以在检查 class 后转换为它)。

它可能会像这样工作(虽然我无法测试):

public JSONArray getSchema()
{
    String avroSchemaHDFSDir = "hdfs://hadoopcluster/schemas";

    try(HdfsClient hdfsClient = new HdfsClient(nameNodeHosts, hadoopZks))
    {
        for(int i = 0; i < hdfsClient.listeFilesHdfs(avroSchemaHDFSDir).size(); i++)
        {
            String fileContent = hdfsClient.listeFilesHdfs(avroSchemaHDFSDir).get(i).toString();
            hdfsClient.openHdfsPath(file);
            JsonReaderFactory factory = Json.createReaderFactory(...);
            JsonReader reader = factory.createReader(...);
            JsonStructure content = Jsonreader.read();
            if (content instanceof JsonArray) {
                return (JsonArray) content;
            }
        }
    }
    catch(Exception e)
    {
        logger.debug("get the specified schema ", e.getMessage());
    }

    return null;     
}