【问题标题】:POST fails( rest-assured) with nested arraysPOST 失败(放心)嵌套数组
【发布时间】:2021-02-05 09:11:34
【问题描述】:

我在 POST 的有效负载中嵌套了数组。尝试通过放心运行 POST 但它抛出 400 我尝试了 hashmap 和 object mapper 但无法使其工作。

{
    "actions": [
        {
            
            "n": "O",
            "r": "o",
            "value": {
                "value": true
            }
        }
    ],
    "condition": {
        "conditions": [
            {
                
                "i": "o",
                "n": "O",
                "operand": "true",
                "operator": "=",
                "property": "value",
                "rt": "o",
                "type": "boolean"
            }
        ],
        
    },
    "currentStatus": "Enabled",
    
   
}

【问题讨论】:

    标签: post hashmap rest-assured


    【解决方案1】:

    您可以按如下方式创建请求正文;

    Map<String, Object> requestBody = new HashMap<>();
    
    // Create actions object array
    Map<String, Object> valueMap = new HashMap<>();
    valueMap.put("value",true);
    
    Map<String, Object> actionsObject = new HashMap<>();
    actionsObject.put("n", "O");
    actionsObject.put("r", "o");
    actionsObject.put("value", valueMap);
    
    Object[] actionsArray = new Object[1];
    
    actionsArray[0] = actionsObject;
    
    requestBody.put("actions", actionsArray);
    
    // Create condition object
    Map<String, Object> conditionsObject = new HashMap<>();
    conditionsObject.put("i", "o");
    conditionsObject.put("n", "O");
    conditionsObject.put("operand", "true");
    conditionsObject.put("operator", "=");
    conditionsObject.put("property", "value");
    conditionsObject.put("rt", "o");
    conditionsObject.put("type", "boolean");
    
    Object[] conditionsArray = new Object[1];
    conditionsArray[0] = conditionsObject;
    
    Map<String, Object> conditionMainObject = new HashMap<>();
    conditionMainObject.put("condition", conditionsArray);
    
    requestBody.put("conditions", conditionMainObject);
    
    // add currentStatus
    requestBody.put("currentStatus", "Enabled");
    
    JSONObject request = new JSONObject(requestBody);
    

    然后在 POST 调用中使用request

        Response response = RestAssured
                .given(RequestSpec).auth()
                .body(request)
                .post("?id=" + Id);
        int statusCode = response.getStatusCode();
        System.out.println(statusCode);
        assertThat(statusCode, equalTo(200));
    

    必需的进口;

    import org.json.JSONObject;
    import java.util.HashMap;
    import java.util.Map;
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2018-11-28
    • 2020-04-15
    • 2011-11-19
    • 2021-01-10
    • 2014-05-18
    • 1970-01-01
    相关资源
    最近更新 更多