我将以下内容存储为json元素的值
当我在文本可视化工具中打开它时,它看起来像这样
除了PNG之外,其他所有事情都会发生什么?
如果这是字符串无法容纳的内容,我该如何确保它包含整个内容?我问的原因是我试图将其反序列化为包含字符串属性的C#对象,但显然因为这个垃圾内容而为null。
我是否需要编码/解码,或使用UTF-8,或删除一些特殊字符或其他东西,以便我可以将整个png内容保存在字符串变量中?
答案 0 :(得分:6)
png是二进制(非文本)文件格式。要将其嵌入json中,您应该将值视为编码形式的byte[]
或string
,例如base-64或hexadecimal。 Convert.ToBase64String
会从byte[]
向您提供base-64,但坦率地说,我只需要将您的JSON序列化程序设为byte[]
并让 担心它。
答案 1 :(得分:2)
如果你想用JSON存储二进制数据,base 64是一个很好的方法:
以下是获取该字符串的示例:
public string ImageToBase64(string path)
{
using(System.Drawing.Image image = System.Drawing.Image.FromFile(path))
{
using(MemoryStream m = new MemoryStream())
{
image.Save(m, image.RawFormat);
byte[] imageBytes = m.ToArray();
return Convert.ToBase64String(imageBytes);
}
}
}
答案 2 :(得分:0)
在发送照片或文件之前,base64会对其进行编码。
string myPhoto = Convert.ToBase64String(System.IO.File.ReadAllBytes(filepath));
然后解码
byte[] tempBytes = Convert.FromBase64String(PhotoString);