在解决如何从apache olingo构建的uri中提取数据时,我遇到了问题。从$ expand提取数据使用此语法。
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是一个集合
答案 0 :(得分:0)
我终于知道了:
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,然后将其放置在迭代器上,然后开始获取数据。