如何在java中创建JSONArray

如何在java中创建JSONArray,java,arrays,hdfs,Java,Arrays,Hdfs,我有两个java函数: listfileshdfs返回存储在HDFS中的文件列表,例如: { "name":"Name", "type":"string" }, { "name":"Version", "type":"string" }, { "name":"r_service", "ty

我有两个java函数:
listfileshdfs
返回存储在HDFS中的文件列表,例如:

{
"name":"Name",
"type":"string"
},
{
"name":"Version",
"type":"string"
},
{
"name":"r_service",
"type":"string"
},
{
"name":"r_timestamp",
"type":"long"
},
如果您注意到,存储在HDFS内容中的文件是JSON格式,例如:

{
"name":"Name",
"type":"string"
},
{
"name":"Version",
"type":"string"
},
{
"name":"r_service",
"type":"string"
},
{
"name":"r_timestamp",
"type":"long"
},
我创建了下面的函数来调用上面的两个函数(一个返回文件列表,另一个打开路径):

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

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

答案是类
JsonReader
。 根据文件:

JsonReaderFactory=Json.createReaderFactory(…);
JsonReader=factory.createReader(…);
JsonStructure content=Jsonreader.read();
然后,该JsonStructure可以是一个JsonArray(在检查类之后,您可以对其进行强制转换)

它可能是这样工作的(尽管我无法测试):

publicjsonarray getSchema()
{
字符串avroSchemaHDFSDir=”hdfs://hadoopcluster/schemas";
try(HdfsClient HdfsClient=newhdfsclient(nameNodeHosts,hadoopZks))
{
对于(int i=0;i
Java中有一个生动的开源JSON API生态系统。根据(很大程度上)您的用例(如何操作json数组),您可以在各种不同的用例之间进行选择。我个人仍然喜欢javax.json,因为它提供了可修改的json对象,但这最终是您自己的选择。(有充分的理由不使用javax.json)。@TreffnonX我使用的是JSONArray。但是我正在寻找如何通过文件内容填充它。@lsabelle哪个
JSONArray
class?有多个API使用此类名。当您有一个
JSONArray
对象引用时,您正在导入什么?@TreffnonX I import javax.json.json;我更改了函数签名,如下所示:publicjsonarray getSchema()。在内部,我添加了JSONArray array=newjsonarray();=>这里我遇到了一个错误,无法实例化类型JSONArrayHow我可以将它们集成到我的函数中?我的函数应该返回一个JSON数组。我应该使用jsonReader吗?@lsabelle,是的,您应该使用jsonReader读取JsonStructure(从文件或基于字符串的流),然后将其转换为JsonArray(假设是一个)。我认为您是Java专家。你能根据我的功能发布一个例子吗。我是java新手。thanks@lsabelle,您是否绝对确定导入的是
javax.json
,而不是
org.json
?因为
JSONArray
是在
org.json
和其他文件中使用的名称,但不是在
javax.json
中使用的。是的,我导入了javax.json,但它不起作用。那么,你能给出一个解决方案吗。你有我的需要,也有我的作用。如何修改它以返回json数组作为结果。