C sharp 将object 序列化位byte 数组,不使用BinaryFormatter
时间: 2024-05-12 20:17:25 浏览: 17
可以使用Json.NET来实现C#中对象的序列化为byte数组,代码示例如下:
```
using Newtonsoft.Json;
using System.Text;
//定义一个对象
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
//将对象序列化为byte数组
public byte[] Serialize(Person person)
{
string json = JsonConvert.SerializeObject(person);
return Encoding.UTF8.GetBytes(json);
}
//将byte数组反序列化为对象
public Person Deserialize(byte[] data)
{
string json = Encoding.UTF8.GetString(data);
return JsonConvert.DeserializeObject<Person>(json);
}
```
需要注意的是,使用Json.NET进行序列化时,对象的属性必须是公开的可读可写的属性。
相关问题
C sharp 将object 序列化位byte 数组
你可以使用.NET中的BinaryFormatter类将C#中的Object对象序列化为byte数组。以下是一个示例代码:
```csharp
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public static byte[] SerializeObject(object obj)
{
if (obj == null)
return null;
BinaryFormatter formatter = new BinaryFormatter();
using (var memoryStream = new MemoryStream())
{
formatter.Serialize(memoryStream, obj);
return memoryStream.ToArray();
}
}
```
该方法接受一个Object对象作为参数,并使用BinaryFormatter将其序列化为一个MemoryStream。最后,它将MemoryStream转换为一个byte数组并将其返回。
c#byte数组转换成hobject
假设你的 `byte` 数组表示一个序列化后的对象,可以使用 `BinaryFormatter` 类将其反序列化成一个 `object` 对象。示例如下:
```csharp
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
// 定义 byte 数组
byte[] byteArray = GetSerializedObject();
// 反序列化为 object 对象
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream(byteArray))
{
object obj = bf.Deserialize(ms);
}
```
其中 `GetSerializedObject()` 方法是获取序列化后的 `byte` 数组的自定义方法。请注意,反序列化时要确保 `byte` 数组是可信的,否则可能会导致安全问题。