我需要从csv文件动态创建一个JSON请求。 csv的格式如下:
TEST_ID;TEST_DESC;RQ_FIELD1;RQ_FIELD2;RQ_FIELD3;RS_FIELD1;RS_FIELD2
TC1;TEST 1;input1;input2;input3;output1;output2
TC2;TEST 2;input1;;input3;output1;output2
TC3;TEST 3;input1;input2;missing;output1;output2
请求必须仅由RQ_FIELDS *和:
组成如果该字段为空,则请求中的FIELD必须保留为空。 如果该字段等于“缺少”,则不应将FIELD添加到请求中。
即
TC1
{ "FIELD1": "input1",
"FIELD2": "input2",
"FIELD3": "input3"
}
TC2
{ "FIELD1": "input1",
"FIELD2": "",
"FIELD3": "input3"
}
TC3
{ "FIELD1": "input1",
"FIELD2": "input2"
}
我尝试了一些操作,但是无法动态创建请求。
有什么建议吗?
提前谢谢
答案 0 :(得分:0)
类似的东西:
def csv = '''TEST_ID;TEST_DESC;RQ_FIELD1;RQ_FIELD2;RQ_FIELD3;RS_FIELD1;RS_FIELD2
TC1;TEST 1;input1;input2;input3;output1;output2
TC2;TEST 2;input1;;input3;output1;output2
TC3;TEST 3;input1;input2;missing;output1;output2'''
def m = [:]
def rqIndexes = []
csv.eachLine{ aLine, cnt ->
if ( cnt == 0 ) {
rqIndexes = aLine.tokenize( ';' ).findIndexValues{ it.startsWith( 'RQ' ) }
}
else {
def k
aLine.split( ';' ).eachWithIndex{ token, idx ->
if ( idx == 0 ) {
k = token
m.put( k, [:] )
}
else{
if ( rqIndexes.contains( idx as Long ) && token != 'missing' ){
m.get( k ).put( "FIELD${idx-1}", token )
}
}
}
}
}
groovy.json.JsonOutput.prettyPrint(groovy.json.JsonOutput.toJson(m))