我有一个在ServiceStack ORMLite中生成的现有SQLite数据库。它有一个字段,表示C#中Dictionary类型的属性。
ServiceStack将其作为JSV序列化到数据库中,适用于在所有.NET中运行的当前系统。
我正在使用现有数据库进行Android实施。 Mono(不幸的是)不是一个选择。
我想知道是否有办法迫使ORMLite在实际编写自定义DialectProvider之外的字段中使用JSON序列化。这将允许我使用可用的JSON解析器轻松解析字段。
或者,Java中的JSV Parser也可以做到这一点。
由于
答案 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,它应该提供一个很好的起点。