【问题标题】:JSON serializer instead of JSV in ServiceStack ORMLiteServiceStack ORMLite 中的 JSON 序列化程序而不是 JSV
【发布时间】:2013-07-15 15:22:37
【问题描述】:

尽管 JSV 被宣传为更快、更紧凑的 JSON 替代方案,但它不受许多平台和数据库的支持,而 JSON 支持。

如何让ServiceStack ORMLite使用JSON格式而不是JSV进行序列化和反序列化?

【问题讨论】:

    标签: servicestack ormlite-servicestack


    【解决方案1】:

    是的,OrmLite 支持pluggable text serializers,它允许您为每个可用的 RDBMS 提供程序指定不同的复杂类型序列化策略,例如:

    可插入文本序列化程序示例

    //ServiceStack's JSON and JSV Format
    SqliteDialect.Provider.StringSerializer = new JsvStringSerializer();       
    PostgreSqlDialect.Provider.StringSerializer = new JsonStringSerializer();
    //.NET's XML and JSON DataContract serializers
    SqlServerDialect.Provider.StringSerializer = new DataContractSerializer();
    MySqlDialect.Provider.StringSerializer = new JsonDataContractSerializer();
    //.NET XmlSerializer
    OracleDialect.Provider.StringSerializer = new XmlSerializableSerializer();
    

    您还可以通过实现 IStringSerializer 来提供自定义序列化策略。

    默认情况下,所有方言都使用现有的JsvStringSerializer,除了 PostgreSQL,由于其内置对 JSON 的支持,默认使用 JSON 格式。

    【讨论】:

    • 在我的测试中,这实际上解决了反序列化嵌套对象序列化为 JSV 的问题。在我的测试中,一个 Dictionary 对象可能是另一个 Dictionary,被序列化为 JSV,但仅反序列化 1 级深度(使用 LoadSingleById)。使用 JSON,它可以处理多个级别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多