2013-07-08 56 views
0
{ 
"random": { 
    "5756cd7a-4662-4428-9b09-dbff3080450a": { 
     "@class": "one", 
     "id": "5756cd7a-4662-4428-9b09-dbff3080450a" 
    }, 
    "857ef5ee-af98-4f24-89fe-29bdbebde882": { 
     "@class": "two", 
     "id": "857ef5ee-af98-4f24-89fe-29bdbebde882" 
    } 
} 
} 

這是我的api'響應',它在JsonPath類型中。從JsonPath中提取動態密鑰

String random = response.getString("random"); 

我被困在這之後如何提取第一個隨機元素。

+1

這是無效的JSON – dougEfresh

+0

更新了我的json –

回答

0

從看文檔,也許你可以使用JsonPath#getMap做提取,如:

final Map<String, RandomObject> result = response.getMap("random", String.class, RandomObject.class); 

RandomObject會是這樣的:

public class RandomObject { 
    private String klass; // N.B. Not sure how to deal with @class naming 
    private String id; 

    // ... constructor/setters/getters etc... 
} 

雖然,我不是很熟悉JsonPath庫,所以它可能不那麼容易。

0

假設你有你的JSON響應爲responseJsonString字符串,下面的代碼可以解決你的問題。

List<String> randomIDS = JsonPath.read(responseJsonString, "$.random..id"); 
    Collections.reverse(randomIDS); 

    for (String randomID : randomIDS) { 
     StringBuilder stringBuilder = new StringBuilder("$.random."); 
     String randomClass = JsonPath.read(
       responseJsonString, 
       stringBuilder.append(randomID).append("[email protected]").toString()); 
     System.out.println(randomClass); 
    }