'RestAssured: posting json request having both String and Integer
I just want to POST json request(using restassured), for such json:
{
 "userId": 1,
 "id": 111,
 "title":"test msg"
 "body": "this is test msg"
}
Im defining base uri, and trying to use hashmap:
RestAssured.baseURI = "http://localhost:8888";
RestAssured.basePath = "/posts/";
Map<String, String> map = new HashMap<String, String>();
map.put("userId", 1);
map.put("id", 111);
map.put("title","test Post");
map.put("body","this is test body");
And of course its "red", because of trying put integer as string.
I'm changing to String.valueOf() for my 1 and 111 numbers,
then successfully posting request with smth like
 given()
    .contentType("application/json")
    .body(map)
    .when()
    .post("/")
    .then()
    .statusCode(201);
But response is incorrect(comparing with needed json):
{
    "id": "111",
    "title": "test Post",
    "body": "this is test body",
    "userId": "1"
}
2 points here:
- id and userId posted as Strings
- order is incorrect
So, question: what is the best approach in such situations, to correctly post needed request, in correct order and with int values for id and usedId?
Thanks!
Solution 1:[1]
What you can do is use Map<String, Object> instead of Map<String,String>.
Also, the order is not preserved for the JSON Object. You cannot and should not rely on the ordering of elements within a JSON object.
An object is an unordered set of name/value pairs. You can check out JSON specification for more info.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | Suraj Gautam | 
