2017-04-06 70 views

回答

1

下面是脚本:

下面的脚本会遍历通的JSON和提取产品名称在有价格的地方也放入数据放入一张名为productPriceMap的地图中,以后可以使用。

def productPriceMap = [:] 
def jsonParsed = new groovy.json.JsonSlurper().parseText(json) 
jsonParsed.products.collect{ product -> 
    product.productRatePlans.collect { ratePlan -> 
     ratePlan.productRatePlanCharges.collect { charge -> 
      charge.productRatePlanChargeTiers.collect{ tier -> 
       if (tier.price) { 
        log.info "${tier.price} - ${product.name}" 
        productPriceMap[product.name] = tier.price 
       } 
      } 
     } 
    } 
} 
log.info "Product and price map\n$productPriceMap" 

enter image description here

您可以快速地尝试这个网上Demo

我相信这可以缩短/更groovified。但这是我能够得到的。

0

你正在做的是过滤某个列表。所以它会给你一些结果,但必须存储在某个地方以进一步使用它。

喜欢这个

def toList(priceNullCheck){ 
    def filteredList = [priceNullCheck].flatten().findAll { it != null} 
    log.info filteredList 
} 

否则,您可以返回[priceNullCheck].flatten().findAll { it != null}直接

修订

import javax.xml.transform.Transformer 
import javax.xml.transform.TransformerFactory 
import javax.xml.transform.dom.DOMSource 
import javax.xml.transform.stream.StreamResult 

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
def response = groovyUtils.getXmlHolder("TestRequest#Response") 

def collectResult = [] 

use (groovy.xml.dom.DOMCategory) { 
for(node in response.getDomNodes("//*:products//*:e")) { 
    def eachNodeAsXml = groovyUtils.getXmlHolder(nodeToString(node)) 
    String priceTagValue = eachNodeAsXml.getNodeValue("//*:price") 
    float price = priceTagValue?Float.parseFloat(priceTagValue):0 
    if(price>0) 
     collectResult.add(eachNodeAsXml.getNodeValue("/*:name")) 
    } 
} 

println collectResult 

def nodeToString(def node) 
{ 
    StringWriter writer = new StringWriter(); 
    Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
    transformer.transform(new DOMSource(node), new StreamResult(writer)); 
    return writer.toString(); 
} 
+0

但是我没有得到我期待的东西,首先获取所有的价格值一个字符串,然后将其转换为列表,然后我必须检查价格不等于零,或者小于0,然后null.then必须设置产品名称 – Prathyusha

+0

哦!我以为你只有该片段的问题:D无论如何,请尝试发布代码。 –

相关问题