gpt4 book ai didi

java - XML 到 JSON getJSONArray() 问题

转载 作者:行者123 更新时间:2023-11-30 06:49:22 24 4
gpt4 key购买 nike

我从 URL 读取 XML,如下所示:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import java.util.Base64;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.json.JSONObject;
import org.json.XML;


public class WebGet {

public static void disableCertificateValidation() throws MalformedURLException, IOException, NoSuchAlgorithmException, KeyManagementException {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}

public void checkClientTrusted(X509Certificate[] certs, String authType) {
}

public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};

// Create all-trusting host name verifier
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};

// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

// Install the all-trusting host verifier
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);

String credentials = "user" + ":" + "psw";
String encoding = Base64.getEncoder().encodeToString(credentials.getBytes("UTF-8"));
URL url = new URL("someURL");
URLConnection con = url.openConnection();
con.setRequestProperty("Authorization", String.format("Basic %s", encoding));
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuilder sb = new StringBuilder();
String apiResponse = "";
while ((apiResponse = br.readLine()) != null) {
sb.append(apiResponse);
}

System.out.println(sb);
JSONObject jsonObj = XML.toJSONObject(sb.toString());
System.out.println("---------------------------");
System.out.println(jsonObj);
jsonObj.getJSONArray("devices");

}

public static void main(String[] args){
disableCertificateValidation();
}
}

除了“jsonObj.getJSONArray(“devices”);”之外,一切都打印并正常工作。它抛出以下异常:

Exception in thread "main" org.json.JSONException: JSONObject["devices"] is not a JSONArray. at org.json.JSONObject.getJSONArray(JSONObject.java:622)

我的输出显示在这里:

{“设备”:{ “总计”:71, “计数”:71, “设备”: [ { “域名ID”:1, “离线”:假, "domain_name": "默认", “供应商”:“思科”, “拓扑”:正确, “ip”:“22.201.120.101”, “名称”:“eagnmn-red-rdmvpn”, “型号”:“阿萨”, “ID”:55 }, { “域名ID”:1, “离线”:假, "domain_name": "默认", “供应商”:“思科”, “拓扑”:正确, “ip”:“22.201.120.51”, “名称”:“eagnmn-red-ras”, “型号”:“阿萨”, “ID”:54 },

我哪里出错了?

最佳答案

你需要使用

JSONArray deviceArray = jsonObj.getJSONObject("devices").getJSONArray("device")

因为您的对象包含devices JSONObject,其中进一步包含您的device JSONArray

关于java - XML 到 JSON getJSONArray() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43120875/

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