#java #android #json #kotlin #org.json
#java #Android #json #котлин #org.json
Вопрос:
Я заметил разницу между тем, как JSONObject ведет себя в Kotlin и Java.
В Java:
public class Animal {
String name;
int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
Animal anim = new Animal("Dog", 2);
JSONObject obj = new JSONObject(new Gson().toJson(anim));
System.out.println(obj);
}
}
Нам нужно преобразовать в строку JSON, прежде чем создавать {"name":"Dog","age":2}
из нее JSONObject. В противном случае мы получим пустой JSONObject {}
.
В Kotlin:
class Animal {
val name: String = "Dog"
val age: Int = 1
}
data class MadExample (
val x: String,
val y: String
)
fun main() {
val mad = MadExample("mad", "example")
println(JSONObject(mad))
val animal = Animal()
println(JSONObject(animal))
}
Нам не нужно преобразовывать его в строку JSON перед созданием JSONObject.
Итак, мой вопрос: что происходит за кулисами в обоих этих случаях? Почему JSONObject не поддерживает объекты непосредственно в Java?
Примечание: — Во всех приведенных выше примерах я использовал org.json.JSONObject
Заранее спасибо.
Комментарии:
1. Что произойдет, если вы добавите свойство getters (
String getName()
) в свой класс Java? Кроме того, пожалуйста, не забудьте указать, чтоJSONObject
вы используете в каждом конкретном случае.2. Когда добавляются средства получения свойств, я получаю
JSONObject
доступ непосредственно к объекту.3. Для обоих языков поля должны быть видимыми в терминах геттеров, с которыми JSONObject будет работать, предоставляя
JSONObject
. Спасибо.