2016-01-21 54 views
0

我有了这个代码,目前通过新泽西州的客户端发送的JSON对象在Java/Groovy:在如何发送groovy map作为泽西休息客户端中的参数发送请求?

webResource = client 
        .resource(endPointUrl) 
        .header("Content-Type", "application/json"); 
def details = [ 
       name : nameVar, 
       start : startDate, 
       end : endDate, 
       status: 1 
       ] 

JSONObject jsonString = new JSONObject(details); 

ClientResponse response = webResource 
         .header("Content-Type", "application/json") 
         .header('Cookie', userCookie) 
         .post(ClientResponse.class, jsonString); 

我想要做的就是发送details地图,而将其转换为JSONObject的,因为我想从我的项目中删除该依赖项。有可能吗?如果我尝试.post(ClientResponse.class, details);它不起作用,因为地图的格式与JSON格式不同。任何帮助将不胜感激

+1

你看过'groovy.json.JsonBuilder()'吗? – Armaiti

回答

2

如果使用groovy.son.JsonBuilder通过Aramiti的建议,你可能想尝试像下面这样:

import groovy.json.JsonBuilder 
import groovy.json.JsonSlurper 

/** 
* Create JSON from the specified map. 
* @param map Map to convert to JSON 
* @return JSON text 
*/ 
private buildJSONFromMap(map) { 
    def builder = new JsonBuilder() 

    builder { 
    map.each { key, value -> 
     "$key" "$value" 
    } 
    } 

    builder.toString() 
} 

/** 
* Convert JSON back to map. 
* @param JSON text to convert. 
* @return Object (a map in this case) 
*/ 
private rebuildMapFromJSON(json) { 
    new JsonSlurper().parseText(json) 
} 

def details = [ 
    name : "nameVar", 
    start : "startDate", 
    end : "endDate", 
    status: 1 
] 

/* Build JSON on client side */ 
def json = buildJSONFromMap(details) 
println("JSON: $json") 

/* Consume JSON/convert to usable object */ 
def rebuiltMap = rebuildMapFromJSON(json) 
print("Rebuilt MAP: $rebuiltMap") 

这将产生在Groovy控制台以下:

JSON: {"name":"nameVar","start":"startDate","end":"endDate","status":"1"} 
Rebuilt MAP: [status:1, start:startDate, name:nameVar, end:endDate] 
+0

感谢设法解决了Aramiti的评论后,在这里接受你的答案 – Tomas

+0

太棒了!很高兴它解决了。谢谢。 – dafunker

相关问题