Groovy中从String到Map的groovycastexception

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Groovy中从String到Map的groovycastexception相关的知识,希望对你有一定的参考价值。

我正在使用Groovy在ready api中实现一个项目。我创建了一个具有以下结构的Groovy脚本文件。

def templateValue = JsonOutput.toJson('''
{
  "generationTime": null,
  "house": {

    "property": "$property",
    "state": "$state",
    "county": "$county",
    "calls": [
      {
        "first": "$first",
        "second": "$second",
        "third": "third Week"
      }
    ],
    "action": "$action"
  }
}''')
def binding = ["property" : "Villa", "state" : "MA", "county" : "MIDDLE", "first" : "123", "second" : "4565", "action" : "Update"]
def engine = new groovy.text.SimpleTemplateEngine()
def template = engine.createTemplate(templateValue).make(binding)
log.info template.toString()

def jsonSlurper = new JsonSlurper()
Map expectedOutput = jsonSlurper.parseText(template.toString())
log.info expectedOutput["property"]

我需要从json获取节点值,然后从json中删除特定节点。

答案

你不需要顶部的JsonOutput.toJson

试试这个:

def templateValue = '''
{
  "generationTime": null,
  "house": {

    "property": "$property",
    "state": "$state",
    "county": "$county",
    "calls": [
      {
        "first": "$first",
        "second": "$second",
        "third": "third Week"
      }
    ],
    "action": "$action"
  }
}'''
def binding = ["property" : "Villa", "state" : "MA", "county" : "MIDDLE", "first" : "123", "second" : "4565", "action" : "Update"]
def engine = new groovy.text.SimpleTemplateEngine()
def template = engine.createTemplate(templateValue).make(binding)

def jsonSlurper = new groovy.json.JsonSlurper()
Map expectedOutput = jsonSlurper.parseText(template.toString())
println expectedOutput.house.property

以上是关于Groovy中从String到Map的groovycastexception的主要内容,如果未能解决你的问题,请参考以下文章

groovy使用范型的坑

groovy map 遍历

在 Groovy 上使用 JSON 响应并使用响应填充 Map

在 Groovy 中从 txt 文件中读取 JSON 对象

groovy jsonOutput将中文转为Unicode的问题

Groovy基础语法整理