gpt4 book ai didi

java - 如何在Java SDK中访问c8y_PropertyType(自定义属性)?

转载 作者:行者123 更新时间:2023-12-02 11:04:10 25 4
gpt4 key购买 nike

我正在使用 Cumulocity Java SDK,并且我正在尝试访问 ManagedObject 之一中的自定义片段。类似这样的事情:

...
"type": "sap_CustomomerLocation",
"c8y_PropertyType":{
"Customer.Name":{
"name":"customerName",
"sap_field_name":{
"requestIdentifier":"SAP",
"adressIdentifier":"customerName"
}
},
"Customer.Address":{
"name":"customerAddress",
"sap_field_name":{
"requestIdentifier":"SAP",
"adressIdentifier":"customerAddress"
}
}
}
...

我无法更改片段的格式。在 Java 应用程序中,我通过以下方式获取 Mo:

InventoryFilter filter = new InventoryFilter();
filter.byType("sap_CustomomerLocation");

ManagedObjectCollection configuration = platform.getInventoryApi().getManagedObjectsByFilter(filter);
ManagedObjectRepresentation singleConfig = configuration.get().allPages().iterator().next();

Map<String, Object> attrs = singleConfig.getAttrs();

问题是我无法访问“sap_field_name”,attrs 是 HashMap@Node。在 IntelliJ 的调试器中,当我使用“evaluateExpression”时,会生成类似的内容:

((HashMap.Node)((HashMap)((HashMap.Node)((HashMap)((HashMap.Node)((HashMap)((HashMap.Node)((HashMap)attrs).entrySet().toArray()[0]).getValue()).entrySet().toArray()[0]).getValue()).entrySet().toArray()[0]).getValue()).entrySet().toArray()[1]).getValue()

那么,你能提出一些建议吗?我应该以某种方式将其传递给 DTO 吗?但是如何处理 JSON 中可能发生变化的键(“Customer.Name”、“Customer.Address”),因为这是一个字段列表。

最佳答案

我尝试在命名空间 c8y.PropertyType 中创建一个新类,它有点起作用,Cumulocity SDK,或者更确切地说 Jackson JSON 发现有一个类并尝试映射它,但问题仍然存在这个动态字段的术语。

在 Jackson 代码中进行小规模调试后,我发现我需要在正确的命名空间中为所有自定义字段创建一个类(不幸的是我不知道名称)。

所以这是我认为可以接受的解决方法:

ManagedObjectRepresentation singleConfig;

Map<String, Object> attrs = singleConfig.getAttrs();
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.valueToTree(attrs);

String customFieldName = jsonNode.get("c8y_PropertyType").get("attrs").iterator().next().get("sap_field_name").get("adressIdentifier").asText();

关于java - 如何在Java SDK中访问c8y_PropertyType(自定义属性)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com