JsonPath(JayWay),它仅返回JSON数组中具有这些键的对象的特定键

时间:2019-04-03 10:35:43

标签: java json jsonpath jayway

目标:

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

previous question解决之后,我有所进步。

考虑以下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和D.G.的对象
  • 对于每个对象,它仅返回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(D.E),并且嵌套了G。
  • 理想情况下,我只想返回B,C和G。
  • 或者,我可以返回B,C和D.G。

谢谢

0 个答案:

没有答案