C# object Serialize & Deserialize by JSON Format

 static void Main(string[] args)
        {
            
string oriString = "output";
 

//字串轉位元組陣列

byte[] oriArray = System.Text.Encoding.UTF8.GetBytes(oriString); 

//檔案轉位元組陣列
byte[] bytePDF = System.IO.File.ReadAllBytes(@"C:\Users\p10154383\Downloads\output.pdf");

//將C#物件以JSON格式序列化為字串
            PDFfile f = new PDFfile
            {
                FileName = "output",
                CreatedDate = DateTime.Now,
                FileSize = 560,
                FileContent = bytePDF //FileContent屬性是byte[]型態
            };
            string serialized = JsonConvert.SerializeObject(f);//JSon.Net預設會把byte[]轉為Base64String
            Console.WriteLine(serialized);


//作法1:JSON格式字串反序列化為C#物件(作法1:已知來源物件型態,直接JSON轉為來源物件,FileContent自動由Base64String轉回byte[])
            var obj = JsonConvert.DeserializeObject<PDFfile>(serialized);
            byte[] returnArray = obj.FileContent;
            System.IO.File.WriteAllBytes(@"C:\Users\p10154383\Downloads\outputNew.pdf", returnArray);


//作法2:JSON格式字串反序列化為Json物件(作法2:未知來源物件型態,先轉JOBJECT,再抓JTOKEN內的值,還是Base64String)
            JObject obj2 = JObject.Parse(serialized);
            JToken jtBase64 = "";
            if (obj2.TryGetValue("FileContent", out jtBase64)) //這時候,Base64 String尚未轉為byte[]
            {
                byte[] aryPDF = Convert.FromBase64String(jtBase64.Value<string>()); //Base64 String Convert to Byte[]
                System.IO.File.WriteAllBytes(@"C:\Users\p10154383\Downloads\outputNew2.pdf", aryPDF);
            }
            
            var enums = obj2.GetValue("FileContent");
            
            //Console.WriteLine(obj.FileContent);
            Console.ReadKey();

        }

using System;

namespace JsonToByteConvert
{
    class PDFfile
    {
        public string FileName { get; set; }
        public int FileSize { get; set; }
        public DateTime CreatedDate { get; set; }
        public byte[] FileContent { get; set; }
    }
}
 

留言

這個網誌中的熱門文章

溪和食品有限公司 - 觀光工廠接待人員(薪約30K.免費供餐),今天投遞此份工作。

載入JavaScript code的最佳時機