groovy 对带有破折号文本使用jsonSlurper.parseText

0g0grzrc  于 2022-11-01  发布在  其他
关注(0)|答案(3)|浏览(326)

如何使用jsonSlurper.parseText在groovy中解析包含破折号的“807-000”?

lb3vh1jj

lb3vh1jj1#

您正在生成以下字符串以进行解析:

[807-000]

我想你需要的是一个包含字符串的json数组:

["807-000"]

您可以自己生成该json:

def arr2 = "[" + arr.collect({ '"' + it + '"' }).join(",") + "]"

但是,既然可以这样做,为什么还要多此一举呢?

def arr2 = groovy.json.JsonOutput.toJson(arr)
ni65a41a

ni65a41a2#

现在还不完全清楚你到底想做什么。parseText()正在等待json被输入。我建议几个选项来解析。

def text = jsonSlurper.parseText("""{ "key": "807-000" } """)

或者您的意思是破折号之前是键,破折号之后是值?如果是这样,您可以尝试执行以下操作:

def map = "807-000".split("-").toSpreadMap()
map.each {row ->
    def parsedText = jsonSlurper.parseText("""{ "${row.key}": "${row.value}" } """)
    println(parsedText)
}

输出为= [807:000]

7jmck4yq

7jmck4yq3#

如何使用jsonSlurper.parseText在groovy中解析包含破折号的“807-000”?
我不确定问题到底是什么。我能想到的是,当键中有连字符时,您可能在使用Groovy属性访问来检索键的值时遇到了问题。您可以通过引用属性名称来实现这一点:

String jsonString = '''
    {"807-000":"Eight O Seven"}
'''

def slurper = new JsonSlurper()
def json = slurper.parseText(jsonString)

// quote the property name which
// contains a hyphen...
String description = json.'807-000'

assert description == 'Eight O Seven'

相关问题