java - 从json获取数组不起作用
问题描述
目前我正在处理一个项目,我需要从远程服务器获取一些数据作为 JSON,然后需要提取数组。在这里,我成功获取了数据,但是问题就在 while 循环附近。
我成功地从远程服务器获取数据。例如,我的远程 url 给出的输出为:
{"id": "1","amount": "1000","course_code": "BASIC","course": "Basic Course","content": "Sample","thumb": "sample.png"},
{"id": "2","amount": "2000","course_code": "ADVANCED","course": "Advanced Course","content": "Sample","thumb": "sample.png"}`
代码
try {
ur = "http://localhost/getsample.php";
URL url = new URL(ur);
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line="";
while (line !=null){
line = bufferedReader.readLine();
data = data+line;
}
data = data.replace("null", "");
JSONArray JA = new JSONArray(data);
for (int i=0;i<JA.length();i++){
JSONObject JO = (JSONObject) JA.get(i);
idArray = idArray + JO.get("id") + ",";
amountArray = amountArray + JO.get("amount") + ",";
course_codeArray = course_codeArray + JO.get("course_code") + ",";
courseArray = courseArray + JO.get("course") + ",";
contentArray = contentArray + JO.get("content") + ",";
thumbArray = thumbArray + JO.get("thumb") + ",";
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
解决方案
您从服务器获得的数据是 JSON 格式,但它们不是 Array 。这是一个对象,
{"id": "1","amount": "1000","course_code": "BASIC","course": "Basic Course","content": "Sample","thumb": "sample.png"},{"id": "2","amount": "2000","course_code": "ADVANCED","course": "Advanced Course","content": "Sample","thumb": "sample.png"}
所以你必须在 json 对象内部循环,比如
for (var key in jsonResponse) {
if (jsonResponse.hasOwnProperty(key)) {
console.log(key + " -> " + jsonResponse[key]);
}
}
编辑:如果您在一个对象中有多个对象,则必须在它们内部循环(外部用于),例如 for(var i in JsonObject)
推荐阅读
- python - 无法使用 Dockerfile 安装 python 模块
- python - 如何在 kivy 中使用在另一个 .py 模块(不是 main.py)中定义的变量?
- templates - 无法将我很棒的模板集成到我的重置密码电子邮件视图中
- python - 跟踪焦点变化
- visual-studio-code - 在 Portable VS Code 中设置 Wakatime 配置文件的位置
- amazon-web-services - 不明确的 Firehose DeliveryStreamName
- angular - Angular:无法读取未定义的属性但仍显示数据
- connection-pooling - org.apache.commons.dbcp.SQLNestedException:无法获得连接,池错误超时等待空闲对象
- typescript - 接口和类型别名之间是否存在语义差异?
- javascript - iOS 上 Safari 中的 target.closest 不起作用