Using generic JSON Object as Request Body
Asked Answered
C

2

8

I'm having a controller which receives JSON Object as input. But the problem is that, the content of JSON will vary for different requests, so Im not able to map the RequestBody to a POJO.
Is there a way I can specify the input parameter as generic JSONObject without having to specify a specific POJO.
I tried @RequestBody JSONObject inputJson. But this is throwing bad request from the client side.
I'm using spring 3.2.13 and Angular as Front End.
Any help is much appreciated. Thanks.

Clementina answered 3/7, 2018 at 9:59 Comment(0)
S
12

It will depend a little on what you're using for JSON conversion. But you probably need to accept the input as a String and generate a JSONObject.

@RequestBody String inputJson
JSONObject jsonObj = new JSONObject(inputJson);

Or process the input as a map and just use that directly. Most versions of Jackson will perform this conversion for you:

@RequestBody Map<String, Object> inputData)
 JSONObject jsonObj = new JSONObject(inputData);

In the map case you may not need the JSONObject but you can generate it if you want.

Stabilize answered 3/7, 2018 at 10:23 Comment(1)
While taking Map<String, Object> if the value of one property is very big in decimal, then it trims and convert it to double. How to solve that ?Scrummage
L
3

You can use JsonNode

@RequestBody JsonNode requestBody
Lingle answered 10/5, 2023 at 12:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.