色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

groovy根據key從json取值

謝彥文1年前8瀏覽0評論

Groovy是一種基于JVM運行的動態語言,并且具有很強的JSON處理能力。在Groovy中,可以很方便地從JSON中獲取想要的值,只需要使用Map的方式進行操作。

下面是一段簡單的Groovy代碼,用于從JSON中獲取key為"name"的值:

def json = '{"name": "Tom", "age": 20}'
def map = new JsonSlurper().parseText(json)
println map.name

以上代碼首先定義了一個JSON串和一個Map,并使用JsonSlurper的parseText()方法將JSON解析為Map,之后就可以方便地通過Map的方式獲取JSON中的key值了。

如果JSON中的某個節點是一個數組,可以使用list的方式來獲取數組中的值。下面的代碼演示了如何從JSON中獲取key為"students"的數組中的第一個元素的"name"值:

def json = '{"students": [{"name": "Tom", "score": 90}]}' 
def map = new JsonSlurper().parseText(json) 
println map.students[0].name

以上代碼中,首先定義了一個包含一個數組的JSON串和一個Map,之后通過Map的方式獲取數組中的第一個元素,并使用點號語法獲取該元素的"name"值。

在處理復雜的JSON時,還可以使用遞歸的方式進行操作,下面的代碼演示了如何從JSON中獲取key為"data"的數組中的所有"name"值:

def json = '{"data": [{"name": "Tom", "age": 20}, {"name": "John", "age": 22}]}' 
def map = new JsonSlurper().parseText(json)
def getNameFromMap(def map) {
map.each { k, v ->if (v instanceof Map) {
getNameFromMap(v)
} else if (v instanceof List) {
v.each { getNameFromMap(it) }
} else if (k == 'name') {
println v
}
}
}
getNameFromMap(map.data)

以上代碼中,定義了一個方法getNameFromMap(),該方法會遞歸遍歷整個Map,并獲取其中所有"name"值。該方法首先判斷當前值是否是Map或List類型,如果是,則繼續遞歸遍歷;如果當前key為"name",則輸出該值。