Json要求POST放心

Json request POST rest-assured

请帮我根据以下输出创建正文请求:

{
  "categories": [
    {
      "categoryId": "4654-456465-4564",
      "fields": {
        "4564654-454646-4564": "Ano",
        "4564654-454646-4561": "Super"
      }
    }
  ],
  "lastUpdate": "1231",
  "controlStructureId": "4654-456465-4564",
  "controlId": "4654-456465-4564",
  "vehicleId": "4654-456465-4564"
}

我的代码在这里,但它不正确,因为我在*字段*部分

中有不需要的[]
public void testPOST() {
        Map<String, Object> jsonBodyUsingMap = new HashMap<String, Object>();

        jsonBodyUsingMap.put("categories", Collections.singletonList(new HashMap<String, Object>() {
            {
                put("categoryId", "4654-456465-4564");
                put("fields", Arrays.asList(new HashMap<String, Object>() {{
                        put("4564654-454646-4561", "Super");
                        put("4564654-454646-4564", "Ano");
                }}
                ));
            }
        }
        ));
        jsonBodyUsingMap.put("lastUpdate", "1231");
        jsonBodyUsingMap.put("controlStructureId", "4654-456465-4564");
        jsonBodyUsingMap.put("controntrolId", "4654-456465-4564");
        jsonBodyUsingMap.put("vehicleId", "4654-456465-4564");

您似乎在包装 key/value 对象,HashMapArray 方法中。如果你丢失了它,你将得到 keys/values 而不是“括号”(无键值列表)

put("fields", new HashMap<String, Object>() {{
    put("4564654-454646-4561", "Super");
    put("4564654-454646-4564", "Ano");
}});

您可以只从 * 字段* 中删除 Arrays.asList() 并只保留哈希映射

public void testPOST() {
        Map<String, Object> jsonBodyUsingMap = new HashMap<String, Object>();

        jsonBodyUsingMap.put("categories", Collections.singletonList(new HashMap<String, Object>() {
            {
                put("categoryId", "4654-456465-4564");
                put("fields", new HashMap<String, Object>() {{
                        put("4564654-454646-4561", "Super");
                        put("4564654-454646-4564", "Ano");
                }}
                );
            }
        }
        ));
        jsonBodyUsingMap.put("lastUpdate", "1231");
        jsonBodyUsingMap.put("controlStructureId", "4654-456465-4564");
        jsonBodyUsingMap.put("controntrolId", "4654-456465-4564");
        jsonBodyUsingMap.put("vehicleId", "4654-456465-4564");