Getting a single value from a JSON object using JSONPath

后端 未结 3 1404
礼貌的吻别
礼貌的吻别 2020-12-16 10:19

I have the following JSON and I need to get the plain name value using JSONPath:

{
  \"single\" : {
    \"id\" : 1, 
    \"name\" : \"Item name\         


        
相关标签:
3条回答
  • 2020-12-16 10:31

    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]

    0 讨论(0)
  • 2020-12-16 10:37

    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!

    0 讨论(0)
  • 2020-12-16 10:52

    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.

    0 讨论(0)
提交回复
热议问题