Getting a single value from a JSON object using JSONPath Getting a single value from a JSON object using JSONPath json json

Getting a single value from a JSON object using JSONPath


but I always get an array:

That is meant to happen. As you can read in this documentation, under 'Result' (almost at the bottom):

Please note, that the return value of jsonPath is an array, which is also a valid JSON structure. So you might want to apply jsonPath to the resulting structure again or use one of your favorite array methods as sort with it.

So basically it will always return an array. If you need the data as an other type, e.g. a String in this case, you will have to do the conversion yourself I'm afraid.


I was using the Java implementation of JSONPath and got to the very same issue. What worked for me was to add '[0]' to the json path string. So in your case:

$.single.name[0]


I think, it depends of language implementation.

For example in nodejs there is a npm module : https://www.npmjs.com/package/jsonpath

Which have a method called value, which does exactly what we need

jp.value(obj, pathExpression[, newValue])

Returns the value of the first element matching pathExpression. If newValue is provided, sets the value of the first matching element and returns the new value.

I tried it and worked!