当前位置: 首页 > 知识库问答 >
问题:

如何使用Olingo从ODATA的多个嵌套展开中提取数据?

舒嘉德
2023-03-14

我在弄清楚如何从apache Olingo构建的uri中提取数据时遇到了问题。从$Expad中提取数据可以使用这种语法。

URI:OData/PropertyOrigin?$expand=Property1($select=field1);$expand=Property2($select=field1ofProperty2))

/* JSON -> 
PropertyOrigin -> 
Field1Origin,
Field2Origin,   
NavigationProperty1 -> 
Field1,
Field2,
Field3,
NavigationProperty2 ->
NavigationField1ofProperty2 <- the one I am trying to extract */

ClientEntity ce = csi.next();
String ExtractData1 = ce.getProperty("Property1").getComplexValue().get("Field1").getValue().toString();

但是,当我试图从第二个$Expand中获取数据时,我得到了一个对象空引用,因为它没有击中我试图与之交互的正确属性。

ClientEntity ce = csi.next();
String ExtractData2 = ce.getProperty("NavigationProperty1").getComplexValue().get("NavigationProperty2").getComplexValue().get("Field1ofNavigationProperty2").getValue().toString();

注意:NavigationProperty2是一个集合

共有1个答案

呼延高超
2023-03-14

我终于想通了:

 ClientEntity ce = csi.next();
 ClientCollectionValue<ClientValue> ccv = ce.getProperty("NavigationProperty1")
                                 .getComplexValue()
                                 .get("NavigationProperty2")
                                 .getCollectionValue();

 Iterator<ClientValue> ite = ccv.iterator();
 ClientValue cv = ite.next();
 String extractData3 = cer.asComplex().get("Field1ofNavigationProperty2").getValue().toString();

描述:因为NavigationProperty2是一个集合,所以我认为我必须使用getcollectionvalue,而不是使用getvalue或getcomplexvalue,然后我将它放在迭代器上,然后开始获取数据。

 类似资料:
  • 我有一个xml文档,它有多个。我能够得到和帐户的详细信息(,等。我很难得到像card_type、年、月、first_six等的东西。 这个文档中有200个事务,因此是循环。 我在尝试代码时遇到以下错误: 以下是我正在尝试的:

  • 这里我有两个文档,我需要查询以获得和我只想获得符合以上条件的注释。并非所有评论。 ' { “_id”: ObjectId(“53b7f2383ed7755c2400002e”), “title”: “Post One”, “author”: “bob”, “posted”: ISODate(“2014-07-05T12:40:24.0Z”), “pageViews”: NumberInt(5),

  • 问题内容: 我正在尝试从数据JSON获取值。我已经成功遍历了JSON数据,几乎满足了我的需求! 在Python中运行以下命令: 给我这个: 我只想获得价值。这是关键。 如何进一步执行命令以仅返回值? 问题答案: 这是完整的输出吗?这本字典包含带有嵌套字典的列表,因此您应该这样处理。假设它被称为: 您的第一个地址是对象,然后是字典中的键,列表中的索引以及该字典的键: 输出: 编辑:根据您所得到的然后

  • 我正在调用一个带有$扩展参数的oData v2服务,因此url如下所示: https://host/odata/v2/myEntity?$扩展=key4 返回一个oData json对象,如下所示: 一旦我收到oData对象,在我的controller.js中,我创建一个这样的JSONModel对象并将其分配给viewModel: 接下来,在我看来。xml我有一个id为“tableId”的表,它将

  • 我在尝试访问firebase实时数据库中的嵌套子节点时遇到问题。 我遇到的错误是 通用域名格式。谷歌。firebase。数据库DatabaseException:无法转换java类型的对象。lang.字符串以键入sg。埃杜。新加坡科技公司。团队项目。用户 我在这里看到了解决方案:如何访问Firebase数据库中嵌套在子节点中的子节点? 这是我尝试从firebase调用数据的代码: 这是我的