1

i have a function that exctract from a json list of elements based on the path i give it.

the func looks like this:

def findAllValuesAtPath(jsValue: JsObject, path: String): List[JsValue] = {
    val jsPath = JsPath(path
      .split("\\[\\*]\\.")
      .flatMap(s => s.split("\\.")
        .map(RecursiveSearch)
      ).toList)
    jsPath(jsValue)
  }

for example:

{
  "person": {
    "kids": [
      {
        "name": "josh",
        "age": 5
      },
      {
        "name": "julia",
        "age": 13
      }
    ]
  }
}

now if i give the path - "person.kids[*].name" I will get list of their names List("josh", "julia") which its what i want.

but if the list of kids were just simple list like:

{
  "person": {
    "kids": [
      "josh",
      "julia"
    ]
  }
}

and i will give the path - "person.kids[*]" I will get empty list List() and I want to get this as List("josh", "julia") (without the brakets)

do you see any way to improve my func to handle both cases?

cchantep
  • 9,118
  • 3
  • 30
  • 41
JohnBigs
  • 2,691
  • 3
  • 31
  • 61

0 Answers0