We can use JsonPath functions such as size() or length() , for example:
@Test public void givenJson_whenGetLengthWithJsonPath_thenGetLength() { String jsonString = "{'username':'jhon.user','email':'jhon@company.com','age':'28'}"; int length = JsonPath .parse(jsonString) .read("$.length()"); assertThat(length).isEqualTo(3); }
Or just net.minidev.json.JSONObject and get the size:
@Test public void givenJson_whenParseObject_thenGetSize() { String jsonString = "{'username':'jhon.user','email':'jhon@company.com','age':'28'}"; JSONObject jsonObject = (JSONObject) JSONValue.parse(jsonString); assertThat(jsonObject) .size() .isEqualTo(3); }
Indeed, the second approach looks better than the first. I did a JMH performance test and I got the following results:
| Benchmark | Mode | Cnt | Score | Error | Units | |-------------------------------------------------|-------|-----|-------------|--------------|-------| | JsonPathBenchmark.benchmarkJSONObjectParse | thrpt | 5 | 3241471.044 | ±1718855.506 | ops/s | | JsonPathBenchmark.benchmarkJsonPathObjectLength | thrpt | 5 | 1680492.243 | ±132492.697 | ops/s |
Sample code can be found here .
SHoko Aug 6 '18 at 17:08 2018-08-06 17:08
source share