簡體   English   中英

如何使用 groovy 解析 json

[英]how to parse json using groovy

我想解析 JSON 數據,如下所示:

{
   "212315952136472": {
      "id": "212315952136472",
      "name": "Ready",
      "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/195762_212315952136472_4343686_s.jpg",
      "link": "http://www.hityashit.com/movie/ready",
      "likes": 5,
      "category": "Movie",
      "description": "Check out the reviews of Ready on  http://www.hityashit.com/movie/ready"
   }
}

我正在使用的代碼是:

JSONElement userJson = JSON.parse(jsonResponse)
userJson.data.each {
    Urls = it.link
}

但是我無法將任何內容分配給Urls 有什么建議么?

您是否嘗試過使用JsonSlurper

示例用法:

def slurper = new JsonSlurper()
def result = slurper.parseText('{"person":{"name":"Guillaume","age":33,"pets":["dog","cat"]}}')

assert result.person.name == "Guillaume"
assert result.person.age == 33
assert result.person.pets.size() == 2
assert result.person.pets[0] == "dog"
assert result.person.pets[1] == "cat"

該響應是 Map,具有一個帶有鍵“212315952136472”的元素。 Map 中沒有“數據”鍵。 如果要遍歷所有條目,請使用以下內容:

JSONObject userJson = JSON.parse(jsonResponse)
userJson.each { id, data -> println data.link }

如果您知道它是單元素 Map 那么您可以直接訪問link

def data = userJson.values().iterator().next()
String link = data.link

如果您知道 id(例如,如果您使用它來發出請求),那么您可以更簡潔地訪問該值:

String id = '212315952136472'
...
String link = userJson[id].link

您可以使用as運算符將 JSON 轉換為 Groovy 中所需的類型:

import groovy.json.JsonSlurper

String json = '''
{
  "name": "John",  
  "age": 20
}
'''

def person = new JsonSlurper().parseText(json) as Person 

with(person) {
    assert name == 'John'
    assert age == 20
}
def jsonFile = new File('File Path');
JsonSlurper jsonSlurper = new JsonSlurper();

def parseJson = jsonSlurper.parse(jsonFile)
String json = JsonOutput.toJson(parseJson)

def prettyJson = JsonOutput.prettyPrint(json)
println(prettyJson)

這個唯一編號的東西有點棘手。

如果你知道這個值,很容易

stage('Test Groovy JSON parsing') {
    steps {
        script {
            def userJson = readJSON file: 'myJsonFile.json'

            def keyList = userJson['212315952136472'].keySet()
            echo "${keyList}"   // ['id', 'name', 'picture', 'link', 'likes', 'category', 'description']
            
            echo "${userJson['212315952136472'].name}"  // Ready
            echo "${userJson['212315952136472'].link}"  // http://www.hityashit.com/movie/ready
        }
    }
}

如果你不知道這個數字,你可以通過 JSON

userJson.each { key, value ->
    echo "Walked through key $key and value $value"
}

還要檢查 Jenkins 的文檔從文件中讀取 JSON

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM