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"
   }
 }
}

这是我在 JsonPath 类型中的 api“响应”。

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

在此之后,我对如何提取第一个随机元素感到困惑。

4

2 回答 2

0

假设您在 responseJsonString 中有您的 json 响应作为字符串,下面的代码可能会解决您的问题。

    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(".@class").toString());
        System.out.println(randomClass);
    }
于 2013-07-08T16:19:08.710 回答
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库不是很熟悉,所以可能不是那么容易。

于 2013-07-08T16:10:17.630 回答