0
我有一些字節數據,我想附加一些元數據並序列化爲某些標準的可互操作格式。我想我也許可以使用JSON做到這一點,在這種情況下,我想有一些像byte [] +元數據到json
{
'metadata' : { /* ... */ },
'data' : ???
}
什麼是做到這一點的好辦法?
我認爲在做base64編碼數據,但後來我得出以下的東西:
class SerializationFormat {
MyMetaData metadata {get; set;}
string data {get; set;}
}
byte[] serialize(byte[] mydata, MyMetaData metadata){
var obj = new SerializationFormat(){
data = system.Convert.ToBase64String(mydata),
metadata = metadata
};
//using json.net
string jsonstring = JsonConvert.SerializeObject(obj);
return System.Text.Encoding.UTF8.GetBytes(jsonstring);
}
我認爲這是相當愚蠢的;我正在採取字節數據,將其編碼爲base64,它保證位於7位ASCII內,將其編碼爲C#字符串(UTF-16),並再次將其解碼爲其原始表示。
有沒有更好的方法來做到這一點?
Json.NET已經是'字節[]'財產轉換爲基64字符串,所以你可以跳過這一部分。請參見[序列化指南](http://www.newtonsoft.com/json/help/html/SerializationGuide.htm)。 – dbc
此外,您可以直接流到['MemoryStream'](https://msdn.microsoft.com/en-us/library/system.io.memorystream%28v=vs.110%29.aspx),因爲顯示在[可以Json.NET序列化/反序列化到/從一個流?](http://stackoverflow.com/questions/8157636/can-json-net-serialize-deserialize-to-from-a-stream/17788118# 17788118),並跳過字符串表示。 – dbc
@dbc我只看到它通過一個textwriter寫入,首先轉換爲UTF-16 base64,然後讓textwriters編碼器將其編碼回UTF8,而不是寫入'MemoryStream' – Martijn