Я использую Java-пакет Cumulocity и пытаюсь получить доступ к пользовательскому фрагменту в одном из 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 я получаю Мо по:
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, когда я использую «defineExpression», генерируется что-то подобное:
((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»), которые могут измениться, потому что это список полей.