处理Android中的序列化JSV类型

时间:2013-02-26 18:55:49

标签: android servicestack ormlite-servicestack

我有一个在ServiceStack ORMLite中生成的现有SQLite数据库。它有一个字段,表示C#中Dictionary类型的属性。

ServiceStack将其作为JSV序列化到数据库中,适用于在所有.NET中运行的当前系统。

我正在使用现有数据库进行Android实施。 Mono(不幸的是)不是一个选择。

我想知道是否有办法迫使ORMLite在实际编写自定义DialectProvider之外的字段中使用JSON序列化。这将允许我使用可用的JSON解析器轻松解析字段。

或者,Java中的JSV Parser也可以做到这一点。

由于

1 个答案:

答案 0 :(得分:4)

复杂的Serializer used in OrmLite to serialize Complex Types类型是可插入的:

//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 Format没有Java实现,但我们确实有一个naive implementation in JavaScript,如果有人希望将它移植到Java,它应该提供一个很好的起点。