如何在 Liferay 7.2 中显示 Blob /Json 数据字段?

How to display Blob /Json data field in Liferay 7.2?

我正在使用一个服务生成器,它正在从 mysql 数据库中检索表单数据。我有一个包含 json 数据的字段,我尝试使用对象映射器映射它并使用 com.fasterxml.jackson.databind.ObjectMapper 显示 json 内容。但是,Blob 数据显示为:com.mysql.cj.jdbc.Blob@4ca74f7f

我如何实际 get/extract 从上面存储 link 的数据?这是我的代码片段:

  for (ddmcontent MyTemp : myList) {
       System.out.println("Content ID       : "+myList.getContentId());
       System.out.println("User Blob Data   : "+myList.getData()); 
       Blob responseBody =myList.getData();

      ObjectMapper objectMapper = new ObjectMapper(); 
          
       List<ModelData> myDat = objectMapper.readValue((DataInput)     


      responseBody,objectMapper.getTypeFactory().constructCollectionType
      (List.class,ModelData.class)); 
          for (ModelData dt : myDat) {
          
          System.out.println("User Name              : "+dt.Name);
          System.out.println("Users Email            : "+dt.Email);

        }

   }

请注意,我已将我的 ModelData 元素定义为所有字符串。

有什么建议吗?我错过了什么?

提前致谢!

toString() 表示暗示对象的类型 com.mysql.cj.jdbc.Blob。如果您查看它的 javadoc(或 interface it implements),您将看到必须解码 Blob 内容的选项,即获取 InputStreambyte[] 表示,这您必须经过正确的字符集解码才能将其转换为字符串。

确保通过使用各种 Unicode 内容测试字符集来确定字符集,这样以后当 table 包含大量未知数据时,您就不必修复编码错误的数据库内容编码。

当您使用 Liferay 的 Service Builder 时,您可能想要分享您的 service.xml(可选模型-hints.xml)的相关部分以检查更简单的实施。

我终于通过将有问题的字段更改为 String 并将最大长度添加到一定数量的 Char 来实现此目的 谢谢!