用JsonSlurper解析json 2级别 - groovy

时间:2015-01-12 21:38:22

标签: groovy groovyshell

我有json响应,我解析它并查看其键集,如下所示。它只给了我3个键集。为什么它只生成3个键集的键值对?如何检索两个或更多级别的字段值?

Json看起来像这样(在content变量中)

{  
   "seatbid":[  
      {  
         "bid":[  
            {  
               "id":"1",
               "impid":"1",
               "price":3.5999999046325684,
               "nurl":"abc.com",
               "adomain":[  
                  "zagg.com",
                  "zagg.com"
               ],
               "iurl":"abc.com",
               "crid":"30364.s320x50m",
               "h":0,
               "w":0
            }
         ],
         "group":0
      }
   ],
   "cur":"USD",
   "nbr":0
}

我解析并做了一个像这样的密钥集检查:

def RespSlurper = new JsonSlurper()
def RespJson = RespSlurper.parseText(content)
log.info(RespJson.keySet())
log.info(RespJson.values())
log.info(RespJson.get("seatbid"))

以上log.info的回复是

Mon Jan 12 16:12:25 EST 2015:INFO:1
Mon Jan 12 16:12:25 EST 2015:INFO:[nbr, seatbid, cur]
Mon Jan 12 16:22:47 EST 2015:INFO:[0, [{group=0, bid=[{w=0, id=1, nurl=abc.com, price=3.5999999046325684, crid=30364.s320x50m, adomain=[zagg.com, zagg.com], impid=1, iurl=abc.com}]}], USD]
Mon Jan 12 16:22:47 EST 2015:INFO:[{group=0, bid=[{w=0, id=1, nurl=abc.com, price=3.5999999046325684, crid=30364.s320x50m, adomain=[zagg.com, zagg.com], impid=1, iurl=abc.com}]}]

如何获取其他字段的值impid

 log.info(RespJson.get("impid"))

1 个答案:

答案 0 :(得分:0)

将其解析为HashMap,其中JSONArray将被解析为内容映射中的列表。

RespJson.seatbid[0].bid[0].impid

应该给出第一个impid的第一个bid的第一个seatbid

记录并查看解析后的响应。