java 将对象转换为JSON文件,然后转换为字节以保存到存储器,然后再转换回对象

nle07wnf  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(165)

假设我有一个类Student,它只有name和age属性。

public class Student {
     private String studentName;
     private Integer age;
}

我想把这个Student对象转换成JSON文件(我想我可以用Jacksonmapper来完成)
然后,我需要将这个.json文件存储到存储器中,所以我使用保存方法(String key,byte[] resource)将任何类型的文件(.zip,.txt等)保存到存储器中。
所以我想知道我能不能这样做:
1.使用Jackson将值写入字符串(Student到json)
1.获取此字符串的字节数
1.使用save保存到存储(studentName,字节)

返回学生对象:

然后,当我从存储中搜索学生时,我需要转换回String,如下所示:

Charset charset = Charset.forName("UTF-8");
String string = new String(studentBytes, charset);

然后使用JacksonMap器将字符串返回给Student
这是否一个好办法(我想不是因为想法是那些字节实际上是一个.json文件,而是一个java String对象的字节)?我有点困惑,因为我正在保存的“文件字节”是用这种方法来自一个String对象的,但我找不到如何将Student对象转换为“.json文件”,无法确定如何保存.json文件(我不需要保存在磁盘中,因为我只需要保存到云存储的字节),我如何将对象写入“内存中的.json文件”或者可能是不将其视为文件,就像bytes对不对?请指出正确的方向,比如如何直接将对象写入一个json文件,然后将这个文件bytes存储?

yi0zb3m4

yi0zb3m41#

是的,如果你想把json保存到一个文件上传到S3,这就是你想要做的。Jackson有一个原生的json数据结构(我认为它叫做JsonNode),但是你不想把它保存到一个文件。只要把json字符串保存到一个文本文件。
要将Student对象转换为字符串:

Student student = new Student("Joe", 25);
ObjectMapper mapper = new ObjectMapper();
String json_string = mapper.writeValueAsString(student);

您可以将此字符串保存到文本文件并上传到S3。当您想要取回Student对象时:

ObjectMapper mapper = new ObjectMapper();
Student student = mapper.readValue(new File("student.json"), Student.class);

请注意,“json file”没有什么特别之处,它只是一个扩展名为.json的文本文件,包含的文本数据恰好是Json格式,您可以将json_string保存为如下文件:

Path path = Paths.get("student.json");
byte[] strToBytes = json_string.getBytes();
Files.write(path, strToBytes);

(参考:https://www.baeldung.com/jackson-object-mapper-tutorial

相关问题