gpt4 book ai didi

java - 将 JSONObject 转换为 JSONArray

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:22 25 4
gpt4 key购买 nike

我目前正在学习一些使用 JAVA 的 android 编程。我的老师分享了这段代码,它将使用 API、获取其 JSON 文件并将其转换为 JSONArray 文件。然后他将遍历该 JSONArray 并将它们放入 ArrayList 中,然后再将它们显示到 Activity 中。

问题是我使用的 API 返回的是 JSONObject 文件,我不知道如何将其正确转换为 JSONArray。

import android.util.Log;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;

public class JSONParser {

String charset = "UTF-8";
HttpURLConnection conn;
DataOutputStream wr;
StringBuilder result;
URL urlObj;
JSONArray jObj = null;
StringBuilder sbParams;
String paramsString;

public JSONArray makeHttpRequest(String url, String method) {

sbParams = new StringBuilder();

if(method.equals("GET")){
// request method is GET

if (sbParams.length() != 0) {
url += "?" + sbParams.toString();
}

try {
urlObj = new URL(url);

conn = (HttpURLConnection) urlObj.openConnection();

conn.setDoOutput(false);

conn.setRequestMethod("GET");


conn.setRequestProperty("AccountKey", "pVU56+0hI26DNLeTzlU/Dw==");
conn.setRequestProperty("UniqueUserId", "33c07f2f-b4c0-4151-acd3-e0829b303d2c");
conn.setRequestProperty("accept", "application/json");

conn.setConnectTimeout(15000);

conn.connect();

} catch (IOException e) {
e.printStackTrace();
}

}

try {
//Receive the response from the server
InputStream in = new BufferedInputStream(conn.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
result = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}

Log.d("JSON Parser", "result: " + result.toString());

} catch (IOException e) {
// e.printStackTrace();
}

conn.disconnect();

// try parse the string to a JSON object
try {

jObj = new JSONArray(result.toString());
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}

// return JSON Object
return jObj;
}

API URL 及其自定义 header :

URL: http://datamall2.mytransport.sg/ltaodataservice/TaxiAvailability

标题-

AccountKey: pVU56+0hI26DNLeTzlU/Dw==
UniqueUserId: 33c07f2f-b4c0-4151-acd3-e0829b303d2c
accept: application/json

EDIT2:我用它来获取带有自定义 header 的原始数据。 http://requestmaker.com/

编辑:这是我得到的 JSON。

{
"odata.metadata": "http://datamall2.mytransport.sg/ltaodataservice/$metadata#TaxiAvailability",
"value": [
{
"Longitude": 103.84009,
"Latitude": 1.35989
},
{
"Longitude": 103.84679,
"Latitude": 1.35544
},
{
"Longitude": 103.76928,
"Latitude": 1.4419
}
....
]
}

最佳答案

添加这个代替 jObj = new JSONArray(result.toString());

JSONObject obj = new JSONObject(result.toString());
JSONArray arr = obj.getJSONArray("value");

现在您可以按照自己的方式使用 JSONArray arr

关于java - 将 JSONObject 转换为 JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35573995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com