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

Hyperledger Composer建模语言能否定义带键值对集合属性的资源?

在Hyperledger Composer中实现键值对集合类型的属性

好问题!在Hyperledger Composer的建模语言(CTO)里,虽然没有原生的map或专属的键值对集合类型,但我们可以通过已支持的类型组合来实现类似的效果,完全能满足你的需求。下面是具体的实现方式:

1. 用Concept模拟键值对结构

这是最常用的方式:先定义一个Concept类型来表示单个键值对,然后在资源(Asset/Participant/Transaction)中用array类型存储这个Concept的实例,以此模拟键值对集合。

示例代码如下:

namespace org.example.sample

// 定义一个键值对的Concept
concept KeyValuePair {
  o String key // 键字段,类型可根据需求调整(比如integer)
  o String value // 值字段,支持string/integer/double/甚至其他Concept
}

// 在资产中使用这个键值对集合
asset CustomAsset identified by assetId {
  o String assetId
  o KeyValuePair[] customProperties // 这就是模拟的键值对集合
}

你可以根据实际需求调整KeyValuePair里字段的类型,比如把value改成integer或者嵌套另一个Concept,来支持更复杂的业务场景。

2. 直接使用Array类型(适用于无显式键的列表场景)

如果你的需求只是存储一组同类型的值,不需要明确的键,直接使用已支持的array类型即可,比如:

asset Product identified by productId {
  o String productId
  o String[] tags // 存储标签列表
  o Integer[] ratings // 存储评分列表
}

3. 操作与查询注意事项

  • 当需要查询特定键的键值对时,Composer的查询语言(QSL)支持过滤数组元素,比如要找到customProperties中包含键为"color"的资产,可以写:
    SELECT org.example.sample.CustomAsset WHERE customProperties[key = 'color']
    
  • 在业务逻辑(Transaction处理器)中,你可以通过遍历数组来操作指定的键值对,比如修改某个键对应的值。

内容的提问来源于stack exchange,提问作者Sowmya Kannan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:34:09