解析只有根的 JSON 文件 - Android
Posted
技术标签:
【中文标题】解析只有根的 JSON 文件 - Android【英文标题】:Parse a JSON file with only root - Android 【发布时间】:2020-06-25 14:40:30 【问题描述】:我还需要从电影数据库中解析一个 JSON 结构:
[
"iso_3166_1": "AD",
"english_name": "Andorra"
,
"iso_3166_1": "AE",
"english_name": "United Arab Emirates"
,
这是我的 API 服务:
@GET("configuration/countries")
Call<LanguageModel> getLanguages(
@Query("api_key") String apiKey);
我创建了这个模型来检索数据:
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
public class LanguageModel implements Serializable
@SerializedName("iso_3166_1")
private String id;
@SerializedName("english_name")
private String originalLanguage;
public String getId()
return id;
public void setId(String id)
this.id = id;
public String getOriginalLanguage()
return originalLanguage;
public void setOriginalLanguage(String originalLanguage)
this.originalLanguage = originalLanguage;
然后,我进行了此调用以将所有值对放入 HashMap:
private HashMap<String, String> initializeMapLang()
HashMap<String, String> tmp = new HashMap<>();
ApiService apiService = ApiBuilder.getClient(DetailActivity.this).create(ApiService.class);
Call<LanguageModel> call = apiService.getLanguages(BuildConfig.API_KEY);
call.enqueue(new Callback<LanguageModel>()
@Override
public void onResponse(Call<LanguageModel> call, Response<LanguageModel> response)
Pair<String, String> resultLang = new Pair<>(response.body().getId(), response.body().getOriginalLanguage());
tmp.put(resultLang.first, resultLang.second);
@Override
public void onFailure(Call<LanguageModel> call, Throwable t)
);
return tmp;
问题是我没有得到任何回应。我的模型正确吗?
【问题讨论】:
【参考方案1】:您的 api 服务正在返回 LanguageModel
的平面列表。 Retrofit 可以为你处理这个问题,你需要做的就是改变端点定义
@GET("configuration/countries")
Call<LanguageModel> getLanguages(
@Query("api_key") String apiKey);
到
@GET("configuration/countries")
Call<List<LanguageModel>> getLanguages(
@Query("api_key") String apiKey);
【讨论】:
以上是关于解析只有根的 JSON 文件 - Android的主要内容,如果未能解决你的问题,请参考以下文章
使用 json2csv nodejs 的 JSON 到 CSV 文件