You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求稳定的C# .NET版SenML解析方案(支持JSON与CBOR格式)

解析SenML到JSON的C# .NET方案

一、处理application/senml+json

SenML JSON本身是符合JSON规范的结构化数据,直接用.NET原生或成熟的JSON序列化库即可完成解析与转换:

  • 定义SenML实体类:根据SenML规范(RFC 8428)定义对应的数据结构,示例如下:
public class SenMLRecord
{
    [JsonPropertyName("bn")]
    public string BaseName { get; set; }

    [JsonPropertyName("n")]
    public string Name { get; set; }

    [JsonPropertyName("u")]
    public string Unit { get; set; }

    [JsonPropertyName("v")]
    public double? Value { get; set; }

    [JsonPropertyName("t")]
    public long? Timestamp { get; set; }

    // 可根据需求添加其他SenML字段(如bv、bt等)
}
  • 解析与转换:使用System.Text.Json(.NET Core 3.0+内置)或Newtonsoft.Json完成解析:
// 用System.Text.Json解析SenML JSON字符串
var senmlJson = "[{\"n\":\"temperature\",\"v\":25.5,\"u\":\"Cel\"}]";
var records = JsonSerializer.Deserialize<List<SenMLRecord>>(senmlJson);

// 转换为标准JSON(若需要格式化输出)
var standardJson = JsonSerializer.Serialize(records, new JsonSerializerOptions { WriteIndented = true });

二、处理application/senml+cbor

对于CBOR编码的SenML,可使用稳定的第三方CBOR库PeterO.Cbor来解析,再转换为JSON:

  1. 安装依赖:通过NuGet安装PeterO.Cbor包。
  2. 解析CBOR并转换为JSON:
// 假设cborBytes是从文件/网络获取的SenML CBOR字节数组
var cborReader = CBORObject.DecodeFromBytes(cborBytes);

// 将CBOR对象直接转换为JSON字符串
var senmlJson = cborReader.ToJSONString();

// 若需要进一步映射到实体类,可再用JSON序列化库解析
var records = JsonSerializer.Deserialize<List<SenMLRecord>>(senmlJson);

备选方案

如果需要更贴合SenML规范的封装,也可以使用SenML.NET库(NuGet可获取),它专门针对SenML实现了序列化与反序列化,同时支持JSON和CBOR格式,直接调用库方法即可完成转换。

内容的提问来源于stack exchange,提问作者Parikshit Bhagawati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:21:02