[英]deserialize json file with base64 encoded file attachments
我正在嘗試使用JSON.NET從JSON文件反序列化base64文件附件。 我可以使用以下代碼反序列化數據,但是我不確定如何解碼base64文件。 請告訴我。
Sample JSON file
-----------------
PostData: {
"Main":{
"date1": "14-JAN-2016",
"summary": "summary test",
"Details":[{
"first": "test",
"last": "last test",
},
]}
"attachments":[ {
"title": "Report1.pdf",
"file_name": "Report1.pdf",
"file_content_type": "application/pdf",
"file_format": "binary",
"file_data": "JVBERi0xLjQNCjUgMCBvYmoNCjw8DQovVHlwZSAvWE9iamVjdA0KL1N1YnR5cGUg
MSAwIFIvSW5mbyAxMjYgMCBSL0lEWzw0NTQ3QjRFREZBNjk2NDQ4QjhBNUU4MUQw
QkU4MkVDMD48NDU0N0I0RURGQTY5NjQ0OEI4QTVFODFEMEJFODJFQzA+XSAvUHJl
diAxMTI3OTI5L1hSZWZTdG0gMTEyNjMxNj4+DQpzdGFydHhyZWYNCjExNDAyNTEN
CiUlRU9G",
},
{
"title": "src.txt",
"file_name": "src.txt",
"file_content_type": "text/plain",
"file_format": "text",
"file_data": "bm5gLDJ9NC1DNFkpN20y4tLmM0",
},
]}
}
var json = System.IO.File.ReadAllText("postData.json");
var myJsonObject = JsonConvert.DeserializeObject<PostData>(json);
public class PostData
{
public Main main { get; set; }
}
public class Main
{
public string date1 { get; set; }
public string summary { get; set; }
public List<Details> details { get; set; }
}
public class Details
{
public string first { get; set; }
public string last { get; set; }
}
如其序列化指南中所述 ,Json.NET自動將Byte []
數組反序列化為Base64字符串。 因此, 清理完JSON之后,您可以將其上傳到http://json2csharp.com/以自動生成類,然后將file_data
屬性修改為byte []
類型 ,結果如下所示:
public class Detail
{
public string first { get; set; }
public string last { get; set; }
}
public class Main
{
public string date1 { get; set; }
public string summary { get; set; }
public List<Detail> Details { get; set; }
}
public class Attachment
{
public string title { get; set; }
public string file_name { get; set; }
public string file_content_type { get; set; }
public string file_format { get; set; }
public byte [] file_data { get; set; }
}
public class PostData
{
public Main Main { get; set; }
public List<Attachment> attachments { get; set; }
}
現在您可以反序列化如下:
var myJsonObject = JsonConvert.DeserializeObject<RootObject>(json);
然后,要將反序列化的字節數組保存到磁盤,可以使用File.WriteAllBytes()
執行以下File.WriteAllBytes()
foreach (var attachment in myJsonObject.PostData.attachments ?? Enumerable.Empty<Attachment>())
{
File.WriteAllBytes(attachment.file_name, attachment.file_data);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.