簡體   English   中英

如何將JSON腳本作為文件發送到Groovy

[英]How to send a json script as a file to groovy

以下是我的JSON腳本。 PRAMS.json

{
    "JSON" : {
        "test": "iTEST",
        "testname": "BOV-VDSL-link-Rateprofile-CLI-Test-1",
        "params": [
            {
                "n2x_variables / config_file": "C:/Program Files (x86)/Agilent/N2X/RouterTester900/UserData/config/7.30 EA SP1 Release/OSP  Regression/BOV/Bov-data-1-single-rate-profile.xml"
            },
            {
                "n2x_variables / port_list": "303/4 303/1"
            }
        ]
    }
}

以下是我的groovy腳本,我正在將params.json腳本發送到相同的groovy腳本。

parseJSON.groovy

import groovy.json.JsonSlurper
def jsonFile = new File("../var/PARAMS.json")
def keys = new JsonSlurper().parse("jsonFile.text")
println keys.keySet()       

我得到以下錯誤:

****No signature of method: groovy.json.JsonSlurper.parse() is applicable for argument types: (java.lang.String) values: [jsonFile.text]****

誰能幫幫我嗎 ?

感謝您的回復,我是這個json的新手。

我無法共享屏幕截圖,嘗試上傳圖像時顯示錯誤消息,但我可以給出總錯誤消息:

developer@cn-vm-yourname:~/Desktop/kramdeni/vars$ groovy parseJSON.groovy

Caught: groovy.lang.MissingMethodException: No signature of method: groovy.json.JsonSlurper.parse() is applicable for argument types: (java.lang.String) values: [jsonFile]
Possible solutions: parse(java.io.Reader), parseText(java.lang.String), use([Ljava.lang.Object;), wait(), grep(), any()
groovy.lang.MissingMethodException: No signature of method: groovy.json.JsonSlurper.parse() is applicable for argument types: (java.lang.String) values: [jsonFile]
Possible solutions: parse(java.io.Reader), parseText(java.lang.String), use([Ljava.lang.Object;), wait(), grep(), any()
at parseJSON.run(parseJSON.groovy:3)

developer@cn-vm-yourname:~/Desktop/kramdeni/v

我的預期輸出是僅按要求的順序打印所有值而沒有鍵。

為了獲得上述結果,我編寫了如下的groovy腳本:

import groovy.json.JsonSlurper

label = "test testname params"

def jsonFile = new File('PARAMS.json')
def par = new JsonSlurper().parse(jsonFile)
println keys.keySet()

def command = ""
keys = label.split(" ")
println "keys: " + keys

for (key in keys) {
    command += par[key] + " "  
}
println "command: " + command
import groovy.json.JsonSlurper

def src = new File("MYPATH/MY.json")
//next line downloads json from URL:
//def src = new URL("http://date.jsontest.com")

def json = new JsonSlurper().parse( src.newInputStream() )

json.each{ k,v->  println "$k = $v" }

試試吧:

https://groovy-playground.appspot.com/#?load=ccceffd570c6ee176bc6f1fcdafdcbe0


如果有例外

groovy.lang.MissingMethodException: No signature of method:
  groovy.json.JsonSlurper.parse() is applicable for argument types:
    (java.io.BufferedInputStream)
  Possible solutions: parse(java.io.Reader) ...

這意味着您具有相當老版本的groovy,但是它建議了解決方案-嘗試從文件中獲取閱讀器:

def src = new File("MYPATH/MY.json")
def json = new JsonSlurper().parse( src.newReader("UTF-8") )
json.each{ k,v->  println "$k = $v" }

但是要繼續,您必須找到groovy的版本,然后找到您版本的文檔並繼續開發引用它

例如在groovy 1.8.6中,JsonSlurper中只有兩種parse方法:

http://docs.groovy-lang.org/1.8.6/html/api/groovy/json/JsonSlurper.html

在最新的常規中,更多...

http://docs.groovy-lang.org/latest/html/gapi/groovy/json/JsonSlurper.html

暫無
暫無

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

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