json - ServiceStack ORMLite 未反序列化存储在数据库文本字段中的 JSON

标签 json servicestack ormlite-servicestack servicestack-text

我有一些遥测数据以 JSON 形式存储在文本字段中。我正在尝试对 POCO 进行逆向工程,以无缝提取和呈现该数据,而无需执行任何后处理 ForEach 循环。

当我尝试手动解析数据字段中的 JSON 字符串时,它起作用了。当我通过 ORMLite 选择时,它会返回默认对象。我缺少什么?

作品

string x = "{\"alive\":true,\"paperStatus\":\"0:NoIssue\"}";
var telemetry = JsonSerializer.DeserializeFromString<KioskTelemetryData>(x);

不填充数据字段

var exp = Db.From<KioskTelemetryLog>()
                    .Where(q => q.Identifier == request.Identifier)
                    .OrderByDescending(q => q.Timestamp);

var data = Db.Select(exp);

数据记录如下:

Id  Identifier  IsCurrent   RedemptionCenterId  Timestamp               Status  Data
1   XXX        0            NULL                2015-11-24 11:10:53.527 1       {"alive":true,"paperStatus":"1:LowPaper"}
2   XXX        0            NULL                2015-12-01 12:16:56.653 0       {"alive":true,"paperStatus":"0:NoIssue"}    
1   XXX        1            NULL                2015-12-01 18:32:11.337 2       {"alive":false}

这是 POCO:

[Alias("TelemetryLog")]
public class KioskTelemetryLog
{
    public long Id { get; set; }

    public string Identifier { get; set; }

    public bool IsCurrent { get; set; }

    public int? RedemptionCenterId { get; set; }

    public DateTime Timestamp { get; set; }

    // 0 = okay, 1 = warning, 2 = error
    public sbyte Status { get; set; }

    public KioskTelemetryData Data { get; set; }
}

public class KioskTelemetryData
{
    public bool Alive { get; set; }
    public string PaperStatus { get; set; }
}

最佳答案

OrmLite 的默认复杂类型序列化器是 JSV Format (使用 JSON 的 PostgreSQL 除外)。 OrmLite 确实支持 pluggable text serializers ,例如您可以将 SQL Server 更改为使用 JSON 来序列化复杂类型:

SqlServerDialect.Provider.StringSerializer = new JsonStringSerializer();

如果序列化不正确,就像序列化错误,您可以尝试 enable logging有关错误的更多信息,例如:

LogManager.LogFactory = new ConsoleLogFactory(debugEnabled:true); 

关于json - ServiceStack ORMLite 未反序列化存储在数据库文本字段中的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35186656/

相关文章:

javascript - 在 ejs 部分中迭代 JSON 对象

php - 如何计算PHP中JSON值的长度?

json - 如何使用 JSON 而不是 CSV 执行这个 d3.js 魔术(分组条形图)?

servicestack - 使用 FluentValidation 对 ServiceStack 进行单元测试

https - ServiceStack JsonServiceClient 可以向带有自签名证书的 https 发送获取请求吗?

repository-pattern - 使用 ServiceStack.ORMLite 实现工作单元和存储库模式的最佳实践

php - Mysql 查询 AnyChart JSON 数据缺少日期

namespaces - 响应状态 xmlns d2p1

sqlite - 如何使用OrmLite的UpdateOnly方法进行部分表更新?

ServiceStack.ORMLite HI/LO 算法