如何在 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 内容的选项,即获取 InputStream
或 byte[]
表示,这您必须经过正确的字符集解码才能将其转换为字符串。
确保通过使用各种 Unicode 内容测试字符集来确定字符集,这样以后当 table 包含大量未知数据时,您就不必修复编码错误的数据库内容编码。
当您使用 Liferay 的 Service Builder 时,您可能想要分享您的 service.xml(可选模型-hints.xml)的相关部分以检查更简单的实施。
我终于通过将有问题的字段更改为 String 并将最大长度添加到一定数量的 Char 来实现此目的
谢谢!
我正在使用一个服务生成器,它正在从 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 内容的选项,即获取 InputStream
或 byte[]
表示,这您必须经过正确的字符集解码才能将其转换为字符串。
确保通过使用各种 Unicode 内容测试字符集来确定字符集,这样以后当 table 包含大量未知数据时,您就不必修复编码错误的数据库内容编码。
当您使用 Liferay 的 Service Builder 时,您可能想要分享您的 service.xml(可选模型-hints.xml)的相关部分以检查更简单的实施。
我终于通过将有问题的字段更改为 String 并将最大长度添加到一定数量的 Char 来实现此目的 谢谢!