用于处理“键:值;键:值;键:值;键:值;”格式的序列化的框架

本文关键字:序列化 框架 格式 用于 处理 | 更新日期: 2023-09-27 18:32:04

当然,编写代码以从这种格式反序列化很容易。我已经做到了,但我不喜欢。

单一责任原则指出,我应该有一个只关心这种序列化的泛型类。而且这个任务足够通用,可以通过框架来应对。

用于处理“键:值;键:值;键:值;键:值;”格式的序列化的框架

如果您将其转换为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 包)。如果它发生在代码中的一个位置,请将其放在非常靠近该位置的位置。