java - 使用 java 访问 json 对象中的列表
问题描述
我有以下 json 字符串,并想使用 Java 访问 alsoKnownAs 列表。我可以用 getString 作为名称,我已经尝试用 getJSONArray 作为alsoKnownAs,但它并不能很好地锻炼
{\"name\":\"moses\",\"alsoKnownAs\":[\"njai\", \"njenga\",\"musa\"]}
我可以访问下面的名称,但我不能等效于 getString 方法,它会返回一个字符串列表或等效于 getJSONArray 的字符串列表
public static Person parsePersonJson(String json) {
JSONObject currentPerson;
String name;
try {
currentPerson = new JSONObject(json);
// so I can access the name like
name = currentPerson.getString("name");
//I was trying this to get the list but figure out I was using a list of json objects, so not how to get the list of stings
JSONArray arrayKnownAs = names.getJSONArray("alsoKnownAs");
List<String> alsoKnownAs= new ArrayList<>();
for (int i = 0, l = arrayKnownAs.length(); i < l; i++) {
String origin;
origin = arrayKnownAs[i];
alsoKnownAs.add(origin);
}
Person thisPerson = new Person(
//I instantiate person object here
);
return thisPerson;
} catch (org.json.JSONException e) {
// error
}
return null;
}
解决方案
如果其他人被困在这里,原来我走在正确的轨道上,我可以使用 getJSONArray 访问列表,但是在为每个成员迭代时,我使用 getString
public static Person parsePersonJson(String json) {
JSONObject currentPerson;
String name;
try {
currentPerson = new JSONObject(json);
// so I can access the name like
name = currentPerson.getString("name");
List<String> alsoKnownAs= new ArrayList<>();
//use getJSONArray to get the list
JSONArray arrayKnownAs = currentPerson.getJSONArray("alsoKnownAs");
for (int i = 0, l = arrayKnownAs.length(); i < l; i++) {
//This is where I was getting it wrong, i needed to use getString to access list items
alsoKnownAs.add(arrayKnownAs.getString(i));
}
Person thisPerson = new Person(
//I instantiate person object here
);
return thisPerson;
} catch (org.json.JSONException e) {
// error
}
return null;
}
推荐阅读
- php - 无法修改标头信息 - 标头已 > 发送者(输出开始于 > \vendor\phpunit\phpunit\src\Util\Printer.php:104)
- python - django - 如何在我的views.py 中向我的URL 添加更多内容?
- dart - rxdart - 使用 combineLatest,combiner 的工作方式
- r - 计算均值时何时使用 which vs subset 函数
- javascript - 移动设备上按钮的可点击区域错误
- html - 数据表 - dataTables_length、dataTables_filter、dataTables_info 和 dataTables_paginate 都显示在单独的行问题
- python - 将多种格式日期转换为仅一种
- scikit-learn - Scikit Spectral Clustering 无法对同心圆进行分类
- javascript - 如何在每毫秒滴答的 onTick 事件中设置状态
- reactjs - 组件和自定义钩子有什么区别?