2017-05-25 4 views
0

SoapUIでjsonリクエストを作成し、テストステップに投稿しようとしています。要求を作成するために、私は以下のコードを持っています。私がそれを実行すると、JsonExceptionがスローされます(下記のテキストを参照してください)。アドバイスをいただければ幸いです。私はこれを60以上のサービスで行っています(私はこれを1001回実行しました)、そしてそれらのすべてが成功しました。私はこの問題が何であるかを突き止めることができません。ありがとう!Groovy:JsonSlurperを実装するとJsonExceptionが発生しています---通常動作します

import groovy.json.JsonSlurper 
import groovy.json.JsonOutput 

def setReqPayload (pArrKeyValues) {//[objId, dirInd, selActId, actDt, coType, secId] 
    def jsonPayload = ''' 
    { 
     "objectId" : "", 
     "actDate": "", 
     "dirIndicator" : "", 
     "selectActId" : "", 
     "coInfo" : {"secId" : "","coType" : ""} 
    } 
    ''' 
    // parse the request 
    def jsonReq = new JsonSlurper ().parseText (jsonPayload) 

    jsonReq.objectId  = pArrKeyValues [ 0 ])    
    jsonReq.dirIndicator = pArrKeyValues [ 1 ] 
    jsonReq.selectActId  = pArrKeyValues [ 2 ] 
    jsonReq.actDate   = pArrKeyValues [ 3 ] 
    jsonReq.coInfo.coType = pArrKeyValues [ 4 ] 
    jsonReq.coInfo.secId = pArrKeyValues [ 5 ] 

    log.info "REQUEST JSON SLURP: " + jsonReq 
    return jsonReq 
} 

例外:

ERROR:groovy.json.JsonException: expecting '}' or ',' but got current char ' ' with an int value of 160 The current character read is ' ' with an int value of 160 

私は解析するだけでなく、コードの下に使用しているが、それは例外の異なる種類(マップのないようなものを)投げ、私はに値を設定することができますされていませんキー。

// parse the request 
def parser = new JsonSlurper ().setType (JsonParserType.LAX) 
def jsonReq = JsonOutput.toJson (parser.parseText (jsonPayload)) 
+0

予想される出力は何ですか? – Rao

答えて

0

あなたのJSONにはnon-breaking space character(s)がありますが、残念ながら無効です。通常のスペース文字である必要があります。 、すなわち、 コメント、ない引用文字列を許可し、あなたはリラックスしたJSONの解析を有効にする場合

使用LAX:LAXモードを使用して

は良いアイデアだったが、非破壊スペースを処理していないようですなど

あなたがソースであなたのデータをクリーンアップすることができないのであれば、あなたはこのようにそれをフィルタリングすることができます。

jsonPayload = jsonPayload.replace('\u00a0', '\u0020') 
+0

お返事ありがとうございました!それはそれを修正した。 replace/replaceAll(Regex)を使用することができませんでしたので、私はメモ帳でjsonを再構築しました。それは基本的に、改行されていないスペース文字を取り除きました。再度、感謝します! – ssc

0

はヘクタール、あなたのように見えますスクリプト内のいくつかの些細な問題。スクリプト以下

import groovy.json.JsonSlurper 
import groovy.json.JsonOutput 

def setReqPayload (pArrKeyValues) {//[objId, dirInd, selActId, actDt, coType, secId] 
    def jsonPayload = ''' 
    { 
     "objectId" : "", 
     "actDate": "", 
     "dirIndicator" : "", 
     "selectActId" : "", 
     "coInfo" : {"secId" : "","coType" : ""} 
    } 
    ''' 
    // parse the request 
    def jsonReq = new JsonSlurper ().parseText (jsonPayload) 

    jsonReq.objectId  = pArrKeyValues [ 0 ]   
    jsonReq.dirIndicator = pArrKeyValues [ 1 ] 
    jsonReq.selectActId  = pArrKeyValues [ 2 ] 
    jsonReq.actDate   = pArrKeyValues [ 3 ] 
    jsonReq.coInfo.coType = pArrKeyValues [ 4 ] 
    jsonReq.coInfo.secId = pArrKeyValues [ 5 ] 

    println "REQUEST JSON SLURP: " + jsonReq 
    return jsonReq 
} 
​setReqPayload([1,2,3,4,5,6])​ 

は、出力の下に生成されます

{actDate=4, coInfo={coType=5, secId=6}, dirIndicator=2, objectId=1, selectActId=3} 
+0

お返事ありがとうございます。上記のHugues Moreauによって提供された解決策が私の問題を解決しました。 – ssc

関連する問題