在 java 中,我从服务器获得响应并将值添加到数据模型类,如下所示:
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("searches");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
SearchHomeModel searchHomeModel = new SearchHomeModel();
searchHomeModel.setWord(jsonObject1.getString("word"));
searchHomeModel.setUrl(jsonObject1.getString("url"));
JSONArray jsonArray1 = new JSONArray(jsonObject1.getString("user"));
for (int j = 0; j < jsonArray1.length(); j++) {
JSONObject jsonObject2 = jsonArray1.getJSONObject(j);
searchHomeModel.setUsername(jsonObject2.getString("username"));
searchHomeModel.setId(jsonObject2.getString("id"));
searchHomeModel.setImage(jsonObject2.getString("image"));
}
arrayList.add(searchHomeModel);
}
Run Code Online (Sandbox Code Playgroud)
所以,我切换到 kotlin,当我调用我的数据模型类时,我应该立即设置该值。
那么,如何从几个不同的地方(在“for”循环 JSONArray 中)设置数据类中的值?
这是 Java 中的 SearchHomeModel 类:
public class SearchHomeModel {
private String word, url, username, id, image, country, city, gender, job, age;
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
Run Code Online (Sandbox Code Playgroud)
在科特林中:
data class SearchHomeModel(
val word: String,
val url: String,
val username: String,
val id: String,
val image: String,
val country: String,
val city: String,
val gender: String,
val job: String,
val age: String
)
Run Code Online (Sandbox Code Playgroud)
我会修改您的 SearchHomeModel 数据类,使其具有具有默认值的可变字段。
data class SearchHomeModel(
var word: String = "default",
var url: String = "default-url.com",
...
)
Run Code Online (Sandbox Code Playgroud)
所有构造函数 args 的默认值将允许您在没有显式 args 的情况下构造它,并使字段可变,var可以让您稍后像使用 setter 方法一样设置它们。
SearchHomeModel searchHomeModel = new SearchHomeModel();
searchHomeModel.word = jsonObject1.getString("word");
Run Code Online (Sandbox Code Playgroud)
也就是说,用尽可能多的参数构造它,如果在调用构造函数时能够可靠地知道某些参数,那么使用valover支持不可变字段var。
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |