4

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

ServiceStack 将其作为 JSV 序列化到数据库中,这对于我们当前在所有 .NET 中运行的系统来说工作得很好。

我正在使用现有的数据库进行 Android 实现。单声道(不幸的是)不是一种选择。

我想知道是否有一种方法可以强制 ORMLite 对实际编写自定义 DialectProvider 之外的字段使用 JSON 序列化。这将允许我使用可用的 JSON 解析器轻松解析该字段。

或者,Java 中的 JSV 解析器也可以解决问题。

谢谢

4

1 回答 1

4

OrmLite 中用于序列化复杂类型的复杂类型序列化器是可插拔的:

//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 格式的 Java 实现,但我们确实在 JavaScript 中有一个幼稚的实现,如果有人希望将其移植到 Java,它应该提供一个很好的起点。

于 2013-02-26T20:18:12.120 回答