-1

I had a json file like this:

{
   "tags":[
      {
         "key":"category",
         "value":"Generic Secret"
      },
      {
         "key":"category",
         "value":"Secret"
      },
      {
         "key":"cvss_31_severity_rating",
         "value":"none"
      },
      {
         "key":"cvss_score",
         "value":"0"
      },
      {
         "key":"language",
         "value":"javascript"
      },
      {
         "key":"owasp_category",
         "value":"a3-sensitive-data-exposure"
      },
      {
         "key":"sink_method",
         "value":"src/auth/auth.controller.ts::program:validateWithX5UJwt"
      },
      {
         "key":"source_method",
         "value":"src/auth/auth.controller.ts::program:validateWithX5UJwt"
      }
   ]
}

I iterated through the tags array:

List <String[]> list = response.getBody().jsonPath().getList("response.findings.tags");
for (int k = 0; k < list.size(); k++) {
    System.out.println(list.get(k));
}

And got something like this:

[{key=category, value=Generic Secret}, {key=category, value=Secret}, {key=cvss_31_severity_rating, value=none}, {key=cvss_score, value=0}, {key=language, value=javascript}, {key=owasp_category, value=a3-sensitive-data-exposure}, {key=sink_method, value=src/auth/auth.controller.ts::program:validateWithJKUJwt}, {key=source_method, value=src/auth/auth.controller.ts::program:validateWithJKUJwt}]

Now I want to pick the value of cvss_score, which in this case is 0. How can I do this?

Cardinal System
  • 2,749
  • 3
  • 21
  • 42

1 Answers1

-1

Really naive solution is using the GSON to deserialize the input:

private static class Data {

    private List<Entry> tags;

}

private static class Entry {

    private String key;
    private String value;

}

Data data = new Gson().fromJson(input, Data.class);
String result = data.tags.stream()
        .filter(entry -> "cvss_score".equals(entry.key))
        .findFirst()
        .map(entry -> entry.value)
        .orElse(null);

Or you can write your own JsonDeserializer to serialize to a Map directly GSON JsonDeserializer JavaDoc

Miri
  • 105
  • 1
  • 3