java - 尝试从 Android Studio 中的 json 对象中检索 json 值
问题描述
我无法使用 Android Studio 检索“callingCodes”数组中的值。我的代码似乎正确,但我仍然有错误消息。
这是json文件:
[
{
"isoName": "AF",
"name": "Afghanistan",
"currencyCode": "AFN",
"currencyName": "Afghan Afghani",
"currencySymbol": "؋",
"flag": "https://s3.amazonaws.com/rld-flags/af.svg",
"callingCodes": [
"+93"
]
},
{
"isoName": "AL",
"name": "Albania",
"currencyCode": "ALL",
"currencyName": "Albanian Lek",
"currencySymbol": "Lek",
"flag": "https://s3.amazonaws.com/rld-flags/al.svg",
"callingCodes": [
"+355"
]
},
{
"isoName": "DZ",
"name": "Algeria",
"currencyCode": "DZD",
"currencyName": "Algerian Dinar",
"currencySymbol": "د.ج.",
"flag": "https://s3.amazonaws.com/rld-flags/dz.svg",
"callingCodes": [
"+213"
]
}
]
这是我的 java android 工作室代码:
JSONArray jsonArray = new JSONArray(response);
for(int i = 0; i < jsonArray.length(); i++){
JSONObject data = jsonArray.getJSONObject(i);
String call = (String) data.getJSONArray("callingCodes").get(0);
countryOperatorList.add(new CountryOperator(
data.getString("isoName"),
data.getString("name"),
data.getString("currencyCode"),
data.getString("currencyName"),
data.getString("currencySymbol"),
data.getString("flag"),
call
));
}
我试图将键“callingCode”转换为字符串,但它返回为 [“+93”] 但我只想恢复“+93”。
但是当我尝试上面的代码时,我收到了这个错误消息:
W/System.err: org.json.JSONException: Index 0 out of range [0..0)
这行代码抛出的是:
String call = (String) data.getJSONArray("callingCodes").get(0);
有没有人有一个解决方案,以便我可以检索 callingCode 键的值。
谢谢!
解决方案
您自己进行解析有什么特别的原因吗?您不能将 Json 与对象一起使用吗?该示例使用Gson。
所以类似(示例代码在 Kotlin 中):
val data = Gson.fromJson(yourJsonString, List<YourJsonObject>)
data class YourJsonObject(
val isoName: String,
val name: String,
val name: String,
val currencyCode: String,
val currencyName: String,
val currencySymbol: String,
val flag: String,
val callingCodes: List<String>
)
Java 示例:
List<YourJsonObject> data = Gson.fromJson(yourJsonString, List<YourJsonObject>)
public class YourJsonObject {
private String isoName;
private String name;
private String currencyCode;
private String currencyName;
private String currencySymbol;
private String flag;
private List<String> callingCodes;
}
推荐阅读
- kubernetes - 如何连接到 kubernetes 集群中的 kafka 实例?
- java - 使用 Neo4J OGM 映射树结构
- c# - 检查鼠标是否没有移动(静止不动)c#WinForms
- json - How can i use sass variables from json file?
- java - 动态 Javafx 视图的控制器类
- java - How to store values in an array and save them in a file
- python-3.x - 当我使用 PIL 将裁剪粘贴到另一个图像时,它会引发 ValueError
- oop - How can one access a base class method using base class object once it has been overwritten?
- laravel - Foreach 条件添加一个数字而不是在 laravel 中重复一个项目
- three.js - 在 ShaderMaterial 中洗掉颜色