Kogito DMN如何创建字符串到对象数组的映射数据类型?
这种字符串到结构体数组的映射结构完全受支持
你描述的是以字符串为键、结构体数组为值的字典(映射/哈希表),几乎所有主流编程语言都原生支持这种嵌套数据结构,核心思路就是用字符串作为字典的键,把结构体数组作为对应的值,键的数量可以动态增减,完全符合你的需求。
下面是几种常见编程语言的实现示例:
Python 实现
可以用自定义类模拟结构体,结合字典和列表实现:
class MyStruct: def __init__(self, objkey1, objkey2, objkey3): self.objkey1 = objkey1 self.objkey2 = objkey2 self.objkey3 = objkey3 # 构建目标映射结构 data_map = { "key1": [MyStruct("xyz", "abc", "123")], "key2": [ MyStruct("XYZ", "ABC", "!@#"), MyStruct("hello", "bye", "cya"), MyStruct("xyz", "abc", "123") ], "key3": [ MyStruct("foo", "bar", "789"), MyStruct("bingo", "bazinga", "12345") ] }
如果不需要严格的类结构,也可以直接用字典模拟结构体:
data_map = { "key1": [{"objkey1": "xyz", "objkey2": "abc", "objkey3": "123"}], "key2": [ {"objkey1": "XYZ", "objkey2": "ABC", "objkey3": "!@#"}, {"objkey1": "hello", "objkey2": "bye", "objkey3": "cya"}, {"objkey1": "xyz", "objkey2": "abc", "objkey3": "123"} ] }
Java 实现
使用HashMap<String, List<MyStruct>>来实现:
// 定义结构体类 class MyStruct { private String objkey1; private String objkey2; private String objkey3; public MyStruct(String objkey1, String objkey2, String objkey3) { this.objkey1 = objkey1; this.objkey2 = objkey2; this.objkey3 = objkey3; } // 可按需添加getter/setter方法 } public class Main { public static void main(String[] args) { java.util.HashMap<String, java.util.List<MyStruct>> dataMap = new java.util.HashMap<>(); // 给key1添加结构体数组 java.util.List<MyStruct> key1List = new java.util.ArrayList<>(); key1List.add(new MyStruct("xyz", "abc", "123")); dataMap.put("key1", key1List); // 给key2添加结构体数组 java.util.List<MyStruct> key2List = new java.util.ArrayList<>(); key2List.add(new MyStruct("XYZ", "ABC", "!@#")); key2List.add(new MyStruct("hello", "bye", "cya")); key2List.add(new MyStruct("xyz", "abc", "123")); dataMap.put("key2", key2List); } }
Go 语言实现
直接使用map[string][]MyStruct类型:
package main import "fmt" // 定义结构体 type MyStruct struct { Objkey1 string Objkey2 string Objkey3 string } func main() { dataMap := map[string][]MyStruct{ "key1": { {"xyz", "abc", "123"}, }, "key2": { {"XYZ", "ABC", "!@#"}, {"hello", "bye", "cya"}, {"xyz", "abc", "123"}, }, "key3": { {"foo", "bar", "789"}, {"bingo", "bazinga", "12345"}, }, } fmt.Println(dataMap) }
TypeScript 实现
通过接口定义结构体,结合Record<string, MyStruct[]>类型实现:
// 定义结构体接口 interface MyStruct { objkey1: string; objkey2: string; objkey3: string; } // 构建映射结构 const dataMap: Record<string, MyStruct[]> = { "key1": [ { objkey1: "xyz", objkey2: "abc", objkey3: "123" } ], "key2": [ { objkey1: "XYZ", objkey2: "ABC", objkey3: "!@#" }, { objkey1: "hello", objkey2: "bye", objkey3: "cya" }, { objkey1: "xyz", objkey2: "abc", objkey3: "123" } ], "key3": [ { objkey1: "foo", objkey2: "bar", objkey3: "789" }, { objkey1: "bingo", objkey2: "bazinga", objkey3: "12345" } ] };
内容的提问来源于stack exchange,提问作者sammy7
相关产品推荐
相关产品推荐

