[DataContract]
public class t_experience
{
[DataMember(Order = 0, IsRequired = true)]
public int level { get; set; } [DataMember(Order = 1)]
public Int64 upgradeNeedExperience { get; set; }
} public static class JSON
{
public static T parse<T>(string jsonString)
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
}
}
public static T parse<T>(string jsonString)
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
}
} }/////////////////////////////
// 序列化
var jsonString = JSON.stringify(new[] { p1, p2 }); // 反序列化,泛型集合
// 数组转换
t_experience[] aa =JSON.parse<t_experience[]>(jsonString);
请问我怎么把这个aa写成一个二进制的文本
这样不行,用这这个没法反回来. public static string stringify(object jsonObject)
{
using (var ms = new MemoryStream())
{
new DataContractJsonSerializer(jsonObject.GetType()).WriteObject(ms, jsonObject); return Encoding.UTF8.GetString(ms.ToArray());
}
}
不是想加密,我是想实现JSON与二进制文件BSON互转
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;namespace ConsoleApplication5
{
[DataContract]
[Serializable]
public class t_experience
{
[DataMember(Order = 0, IsRequired = true)]
public int level { get; set; } [DataMember(Order = 1)]
public Int64 upgradeNeedExperience { get; set; }
} public static class JSON
{ public static T parse<T>(string jsonString)
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
}
}
public static string stringify(object jsonObject)
{
using (var ms = new MemoryStream())
{
new DataContractJsonSerializer(jsonObject.GetType()).WriteObject(ms, jsonObject); return Encoding.UTF8.GetString(ms.ToArray());
}
}
}
//二进制
public static class BinaryFmt
{
//反序列化
public static T parse<T>(byte[] buffer) where T : class
{
BinaryFormatter bf = new BinaryFormatter();
using (var ms = new MemoryStream(buffer))
{
return bf.Deserialize(ms) as T;
}
}
//序列化
public static byte[] binaryify(object binaryObject)
{
BinaryFormatter bf = new BinaryFormatter();
using (var ms = new MemoryStream())
{
bf.Serialize(ms, binaryObject);
return ms.ToArray();
}
}
} class Program
{
static void Main(string[] args)
{
t_experience p1 = new t_experience() { level = 1, upgradeNeedExperience = 111 };
t_experience p2 = new t_experience() { level = 2, upgradeNeedExperience = 222 };
// 序列化
var jsonString = JSON.stringify(new t_experience[] { p1, p2 });
// 反序列化,泛型集合
t_experience[] aa = JSON.parse<t_experience[]>(jsonString);
//二进制序列化成
byte[] buffer = BinaryFmt.binaryify(aa);
//这里存文件
//二进制反序列化
t_experience[] bb = BinaryFmt.parse<t_experience[]>(buffer);
// json序列化
var json2String = JSON.stringify(bb);
Console.WriteLine(json2String);
Console.ReadKey(); }
}
}