如何抽象不同的JSON库实现

本文关键字:JSON 实现 何抽象 抽象 | 更新日期: 2023-09-27 17:53:07

为我的。. net/c# 项目,我需要使用JSON库,但我应该依赖于特定的实现。我知道有很多像JSON这样的JSON *c#*库。. NET、FastJson、Simple Json (simplejson.codeplex.com)等。现在,我应该如何抽象出不同的实现,以便将来能够切换库。我对其他图书馆没有控制,但我对我的项目有完全的控制。征求您的意见

如何抽象不同的JSON库实现

根据您的需要,您可以创建到您希望使用的任何库的单个入口点。

public static class Json
{
    public static string Serialize(object o)
    {
        // ...  
    }
    public static T Deserialize<T>(string s)
    {
        // ...
    }
}

这样做的一种方法是创建一个所有库都具有匹配能力的接口,然后为每个使用特定库实现接口的接口实现一个包装器类。每个包装器类必须在一个单独的程序集中,以避免依赖于包装器类的库。

然后,当您在运行时选择实现时,您将通过反射实例化包装器类来实现。

最好的方法是创建一个接口。

下面是我们如何在Facebook c# SDK中实现它(http://facebooksdk.codeplex.com)

public interface IJsonSerializer
{
    string SerializeObject(object obj);
    object DeserializeObject(string json, Type type);
    T DeserializeObject<T>(string json);
    object DeserializeObject(string json);
}