Reputation: 784
I Just came across a situation where I need to put the data in the JSONObject, while doing that I received a warning from the compiler regarding.
Type safety: The method put(Object, Object) belongs to the raw type HashMap. References to generic type HashMap should be parameterized.
I tried to parameterize the JSONObject but it gave me the error.
I am using following code where option is a Object.
JSONObject additionalDetails = new JSONObject();
additionalDetails.put("showOppo", option.isShowOppo());
additionalDetails.put("showCont", option.isShowCont());
additionalDetails.put("contActionTaken", option.isConActionTaken());
additionalDetails.put("oppoActionTaken", option.isOppoActionTaken());
How is this caused and how can I solve it?
Upvotes: 18
Views: 24043
Reputation: 21
Use this json implementation instead - it 100% resolves the issue! Note: use method toString() instead of toJSONString()
import org.json.JSONObject;
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20231013</version>
</dependency>
Upvotes: 1
Reputation: 2000
to avoid the warning and to better work I change it like that (when JSONObject additionalDetails)
import com.jayway.jsonpath.JsonPath;
JsonPath.parse(additionalDetails).set(fieldPath, Value);
Upvotes: 1
Reputation: 406
I recently face this problem.There are two libraries for JSONObject which is creating confusion for you You have used wrong json jar that is json-simple-1.1.jar, package that you imported is org.json.simple.JSONObject, use java-json.jar and import org.json.JSONObject download jar from http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm
Upvotes: 1
Reputation: 561
I don't know if you still have this problem, but I think it will benefit others who came across this problem.
I came across this problem and after a while, I managed to get it fixed using a HashMap.
HashMap<String,Object> additionalDetails = new HashMap<String,Object>();
additionalDetails.put("showOppo", option.isShowOppo());
additionalDetails.put("showCont", option.isShowCont());
additionalDetails.put("contActionTaken", option.isConActionTaken());
additionalDetails.put("oppoActionTaken", option.isOppoActionTaken());
JSONObject additionalDetailsJSON = new JSONObject(additionalDetails);
If you don't know what type the hashmap will hold or if it holds multiple types, its safer to use Object. Otherwise use the proper type.
This solution works on json-simple 1.1.1 and Java 1.5 and up.
Upvotes: 38
Reputation: 57
If option.isShowOppo() is returning boolean value. Try Boolean value= option.isShowOppo(); and then additionalDetails.put("showOppo",value);
Upvotes: 0
Reputation: 33010
You are using JSON Simple. Its JSONObject
is derived from HashMap
but unfortunately doesn't use generic parameters (probably because it was created in pre-generic times). So the warnings you see are the same as in:
HashMap map = new HashMap();
map.put("showOppo", option.isShowOppo());
Unfortunately you can't avoid the warnings.
I would recommend to switch to another JSON library like GSON or Jackson.
Upvotes: 14