【发布时间】:2017-09-27 22:18:43
【问题描述】:
我有一个位图图像,我使用以下方法将其转换为 JSON 文件:
string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Bitmap image);
.json 文件内容:
{
"Tag":null,
"PhysicalDimension":{
"IsEmpty":false,
"Width":376,
"Height":221
},
"Size":{
"IsEmpty":false,
"Width":376,
"Height":221
},
"Width":376,
"Height":221,
"HorizontalResolution":96,
"VerticalResolution":96,
"Flags":2,
"RawFormat":{
"Guid":"b96b3caa-0728-11d3-9d7b-0000f81ef32e"
},
"PixelFormat":2498570,
"Palette":{
"Flags":62,
"Entries":[
]
},
"FrameDimensionsList":[
"7462dc86-6180-4c7e-8e3f-ee7333a7a483"
],
"PropertyIdList":[
],
"PropertyItems":[
]
}
现在我尝试用这种方式反序列化文件:
Bitmap bm = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Bitmap>(json);
但是得到了错误:
System.MissingMethodException: "对于"System.Bitmap" 类型, 没有参数的构造函数没有定义。”
是否有其他方法可以反序列化文件或如何修复此代码?
谢谢!
【问题讨论】:
-
你的 json 怎么样?
-
为什么要将位图(二进制)转换为 json?
-
显示它?或者你用它做什么?
-
@MrsLSD 您是否意识到您的 JSON 不包含实际图像,仅包含图像属性。并且在序列化时您将无法再次显示图像?
-
@MrsLSD 停止。想想看。您已经有一个可以保存为文件的二进制对象。然后你需要在
pictureBox中显示这个文件。只需再次读取该二进制文件并显示它。为什么要涉及 JSON 和序列化?
标签: c# json.net json-deserialization