1

客观的:

  • 我有一个带有 JSON 对象数组的 JSON。
  • 我只想返回具有特定字符串的某些成员(字符串:元素)的数组对象。
  • 在数组中的那些过滤对象中,我只想返回过滤后的字符串,而不是整个对象。
  • 所有测试都在https://jsonpath.herokuapp.com进行。

在解决了上一个问题之后,我进步了一点。

考虑以下 JSON

[  
   {  
      "A":"val1",
      "B":"val2",
      "C":"val3",
      "D":{  
         "E":[  
            {  
               "F":"val4"
            }
         ],
         "G":[  
            {  
               "H":"val5",
               "I":"val6",
               "J":"val7"
            }
         ]
      }
   },
   {  
      "A":"val8",
      "B":"val9",
      "C":"val10",
      "D":{  
         "E":[  
            {  
               "F":"val11"
            }
         ],
         "G":[  
            {  
               "H":"val12",
               "I":"val13",
               "J":"val14"
            }
         ]
      }
   },
   {  
      "A":"val15",
      "B":"val16"
   },
   {  
      "A":"val8",
      "B":"val9",
      "C":"val10",
      "D":{  
         "E":[  
            {  
               "F":"val11"
            }
         ]
      }
   }
]

在 JsonPath (Java JayWay) 解析器上,以下路径:
[?(@.B && @.C && @.D.G)]['B','C','D']

返回:
- 仅具有 B、C 和 DG
的对象 - 对于每个对象,它仅返回 B、C 和 D。

[
   {
      "B" : "val2",
      "C" : "val3",
      "D" : {
         "E" : [
            {
               "F" : "val4"
            }
         ],
         "G" : [
            {
               "H" : "val5",
               "I" : "val6",
               "J" : "val7"
            }
         ]
      }
   },
   {
      "B" : "val9",
      "C" : "val10",
      "D" : {
         "E" : [
            {
               "F" : "val11"
            }
         ],
         "G" : [
            {
               "H" : "val12",
               "I" : "val13",
               "J" : "val14"
            }
         ]
      }
   }
]

什么不见​​了:

  • 此解决方案仍返回 E (DE),并嵌套了 G。
  • 理想情况下,我只想返回:
    • B、C 和 G. 或
    • B、C 和 DG

谢谢

4

0 回答 0