我将键值对放入Java中,HashMap
并String
使用toString()
方法将其转换为。
是否可以将这种String
表示形式转换回HashMap
对象并使用其对应的键检索值?
谢谢
toString()
这种方法依赖于的实现,toString()
并且在大多数情况下可能是有损的。
这里不可能有无损解决方案。但更好的方法是使用对象序列化
将对象序列化为字符串
private static String serialize(Serializable o) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(o);
oos.close();
return Base64.getEncoder().encodeToString(baos.toByteArray());
}
将字符串反序列化为对象
private static Object deserialize(String s) throws IOException,
ClassNotFoundException {
byte[] data = Base64.getDecoder().decode(s);
ObjectInputStream ois = new ObjectInputStream(
new ByteArrayInputStream(data));
Object o = ois.readObject();
ois.close();
return o;
}
在此,如果用户对象具有临时字段,则它们将在过程中丢失。
旧答案
一旦使用toString()将HashMap转换为String;不是您可以将其从该String转换回Hashmap,而只是将其转换为String表示形式。
您可以将对HashMap的引用传递给method,也可以对其进行序列化
这是toString()的描述toString()
这是带有序列化说明的示例代码。
并将hashMap作为arg传递给方法。
public void sayHello(Map m){
}
//calling block
Map hm = new HashMap();
sayHello(hm);
我使用的是标准的Python3 lib,特别是函数 binascii.crc_hqx(数据,值) 我尝试了函数的变体 binascii.a2b_hqx(字符串) 将binhex4格式化的ASCII数据转换为二进制数据,而不执行RLE解压缩。字符串应该包含完整数量的二进制字节,或者(如果是binhex4数据的最后一部分)剩余位为零。 此回溯:
问题内容: 我面临与转换为相关的问题。实际上,我将浮点类型存储在数据库中,但是当我们通过下面的代码从数据库中获取数据时,它是类型。我们获得的价值以表格的形式出现。 那么我们如何获得像这样的格式数据呢? 问题答案: 只需将您的双曲投向花车即可。 还要注意,基本类型不能存储无限的数字集:
我需要从<代码>列表转换 我做了: 但是我得到了这个字符串: 只是一个字符串,但我需要字符串[] 多谢了。
问题内容: 我正在尝试保存到,然后在Swift中读回新的内容。要转换到我使用下面的代码: 如何将(即)转换回新的? 问题答案: 假设图像的比例为1。 在Swift 4.2中,将以下代码用于get Data()。
问题内容: 因此,我尝试将Key转换为字符串,以便可以使用System.out显示它,然后将其转换回Key。我可以使用BASE64Encoder将其转换为字符串,但是在将其转换回时遇到问题。这是我的源代码: 问题答案: 您永远不会使用un-base-64您的字符串。 替换为: 与
问题内容: 我看过几本 教程,解释了如何将二进制图像转换为encode64表示形式: 我的问题是,如何将该字符串表示形式返回到缓冲区的二进制数据。 问题答案: 这个问题有一些有用的信息:如何在node.js中进行Base64编码? Buffer类本身进行转换: