Моя проблема очень проста. У меня есть объект java
public class Cat {
String id;
String name;
JSONObject ability;
// getter and setter
}
и кусок кода
Cat cat = new Cat();
JSONObject ability = new JSONObject();
ability.put("catch", "mouse");
cat.setId("one");
cat.setName("Tom");
cat.setAbility(ability);
System.out.println(new JSONObject(new Gson().toJson(cat)));
и вот вывод:
{"name":"Tom","id":"one","ability":{"map":{"catch":"mouse"}}}
Кто-нибудь может сказать мне, почему появилась "карта"?




JSONObject происходит из библиотеки org.json:json, а Gson - из com.google.code.gson:gson.
Вам следует выбрать одну библиотеку и использовать ее. Эти библиотеки не знают, как обрабатывать классы друг от друга.
Отвечая на ваш актуальный вопрос: Gson обрабатывает JSONObject как любые другие классы, просто сериализуя их поля.
JSONObject есть одно поле
private final Map<String, Object> map;
Используйте com.google.gson.JsonObject вместо org.json.JSONObject