如何解析AEM DAM JSON InputStream并创建JSON对象

时间:2018-03-06 00:22:24

标签: aem

我有一个要求在哪里我必须阅读AEM DAM中存在的JSON文件。所以,我创建了一个查询来读取inputStream中的JSON文件。使用下面的代码行,我可以在Input Stream中获取JSON文件。现在,我需要知道是否有任何标准库来读取输入流并创建JSON对象?

InputStream is = asset.getOriginal().getStream();

2 个答案:

答案 0 :(得分:1)

在java中有许多用于序列化/反序列化JSON的库,最值得注意的是Google的Gson:https://github.com/google/gson

我在所有需要JSON操作的AEM项目中都使用了gson。这并不意味着你不能使用另一个库。

答案 1 :(得分:0)

如上所述,有很多库,例如Google的Gson,Jackson等。我认为下面的代码段可以为您提供帮助,

public JSONObject getJsonFromFile(ResourceResolver resolver,String filePath){
   JSONObject jsonObj=new JSONObject();
    Resource resource=  resolver.getResource(filePath);
    try {
        Node jcnode = resource.adaptTo(Node.class).getNode("jcr:content");
        InputStream content=jcnode.getProperty("jcr:data").getBinary().getStream();
        StringBuilder sb = new StringBuilder();
        String line;            
        BufferedReader br = new BufferedReader(new 
        InputStreamReader(content,StandardCharsets.UTF_8));
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
        jsonObj = new JSONObject(sb.toString());

    }catch (RepositoryException | JSONException | IOException e) {
        LOGGER.error(e.getMessage(),e);
    }

    return jsonObj;
}