2016-03-23 15 views
2

Geri kalanı kullanarak duman testi yapıyorum ve beklenmedik hataların meydana gelmemesi için api'yi çaprazlamak istiyorum.RestAssured JsonPath: hiyerarşideki elemanların düz dizisi

{ 
... 
"sites": [ 
    { 
     ... 
     "groups": [ 
      { 
       ... 
       "locations": [ 
        { 
         ... 
         "racks": [ 
          { 
           "rackId": 123456789, 
           ... 
          }, 
          { 
           "rackId": 987654321, 
           ... 
          }, 
          ... 
         ] 
        } 
       ] 
      } 
     ] 
    }, 
    { 
     ... 
     "groups": [ 
      { 
       ... 
       "locations": [ 
        { 
         ... 
         "racks": [ 
          { 
           "rackId": 11111111, 
           ... 
          }, 
          { 
           "rackId": 22222222, 
           ... 
          }, 
          ... 
         ] 
        } 
       ] 
      } 
     ] 
    }, 
    ... 
] 
} 

JsonPath Sonra bu rackIds için bir sonraki istekleri çağırmak için tüm rackIds düz bir listesini almak çalışıyorum RestAssured gruplanacak kullanma:

ben şöyle bir veri yapısına sahip.

jsonPath.getList("sites.groups.locations.racks.rackId", Long.class); 

>> java.lang.NumberFormatException: For input string: "[[[406071537, 406071538, 406071539, 406071540, 406071541]]]" 

bu yolu kullanarak çalıştı, ama bu sözdizimi sadece diğer JsonPath uygulanması değil, ile birlikte bir çalıştığını düşünüyoruz çünkü işe yaramadı kalan güvenen şimdi indi

"$.sites[*].groups[*].locations[*].racks[*].rackId" 

Buna, listeler listelerinin listesini listeler, sonra kendimi düzleştirebilirim. Ama sonra sorun var, varsayılan olarak Integers olarak yorumlanan sayılar, ama Uzun değerler alıyorum.

List list = jsonPath.getList("sites.groups.locations.racks.rackId"); 

Herhangi bir fikir?

cevap

4

Sadece flatten() kullanın:

List list = jsonPath.getList("sites.groups.locations.racks.rackId.flatten()"); 
İlgili konular