當然,編寫這種格式的反序列化代碼很容易。我已經做到了,但我不喜歡。「key:value; key:value; key:value; key:value;」中處理序列化的框架格式
single responsibility principle指出我應該有一個只考慮這種序列化的泛型類。而且任務足夠通用,可以由框架來應對。
當然,編寫這種格式的反序列化代碼很容易。我已經做到了,但我不喜歡。「key:value; key:value; key:value; key:value;」中處理序列化的框架格式
single responsibility principle指出我應該有一個只考慮這種序列化的泛型類。而且任務足夠通用,可以由框架來應對。
如果你把它轉換成一個JSON字符串等(應該很容易)
var jsonArray = 「[{'key':'value'}, {'key':'value'}, {'key':'value'}, {'key':'value'}]」;
,那麼你可以很容易地Json.NET反序列化到任何你想要的和需要Json.NET轉換值的護理爲正確的類型爲您提供:
MyType1[] result = JsonConvert.Deserialize<MyType1[]>(jsonArray);
MyType2[] result = JsonConvert.Deserialize<MyType2[]>(jsonArray);
public class MyType1
{
public string key { get; set; }
public string value { get; set; }
}
public class MyType2
{
public string key { get; set; }
public double value { get; set; }
}
,甚至就像一本字典(我希望我的語法正確,我沒有測試):
var jsonDic = 「{{'key':'value'}, {'key':'value'}, {'key':'value'}, {'key':'value'}}」;
var result = JsonConvert.Deserialize<Dictionary<string, string>>(jsonDic);
單責任類(只是作爲例子):
public class KeyValueParser
{
public static TResult ParseKeyValueString<TResult>(string keyValueString)
{
keyValueString = ConvertToJson(keyValueString);
TResul result = JsonConvert.DeserializeObject<TResult>(keyValueString);
return result;
}
private static string ConvertToJson(string keyValueString)
{
// convert keyValueString to json
}
}
用法
var jsonDic = 「{{'key':'value'}, {'key':'value'}, {'key':'value'}, {'key':'value'}}」;
var result = KeyValueParser.ParseKeyValueString<Dictionary<string, string>>(jsonDic);
我真的不明白這個問題。
如果它是你的程序做了很多事情,然後將該功能移動到一些很容易獲得的區域(或者如果你的系統需要它,則可以使用nuget包)。如果它發生在你的代碼中的一個地方,那麼它就非常接近那個地方。
也許在聊天中說話會很有趣。 – Revious 2014-11-25 13:50:08
會'value'含有分號或換行符或這樣?如果是這樣,語法如何告訴分號是'value'的一部分,而分號除了分隔'key:value'的分號? – 2014-11-25 14:09:15
不,鍵和值都是數字。 – Revious 2014-11-25 14:15:49
那麼,這不就是分裂分號和分裂每個冒號? – 2014-11-25 14:16:44