gpt4 book ai didi

java - 使用 getJSONObject(int)

转载 作者:行者123 更新时间:2023-11-30 02:53:39 25 4
gpt4 key购买 nike

我正在尝试解析一些 JSON。这是代码。 frc-manual.usfirst.org/a/GetAllItems/ManualID=3我已经尝试了几个小时让它工作,但我在网上看到的每个示例都使用 getJSONObject(int),但我只能使用 getJSONObject(String)。这是不可能的。我是不是忽略了什么?

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import android.annotation.SuppressLint;

public class JSON {
private String html = "html";
private String version = "version";
private String pageString = null;
private String urlString = "http://frc-manual.usfirst.org/a/GetAllItems/ManualID=3";

public volatile boolean parsingComplete = true;
public JSON(String page){
this.pageString = page;
}
public String getHTML(){
return html;
}
public String getVersion(){
return version;
}

@SuppressLint("NewApi")
public void readAndParseJSON(String in) {
try {
JSONObject reader = new JSONObject(in);

JSONObject head = reader.getJSONObject("data").getJSONObject("SubChapter").getJSONObject("3").getJSONObject("children").getJSONObject(pageString);
if(head != null){
html = head.getString("item_content_text");
html = html + head.length();
for(int i = 0; i < head.length();i++){
JSONObject children = head.getJSONObject(i);
if(children != null){
html = html + children.getString("item_content_text");
}

}
}

//html = html + listFromJsonSorted(head.getJSONObject("children"));





JSONObject main = reader.getJSONObject("data");
version = main.getString("LatestManualUpdate");

parsingComplete = false;



} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public void fetchJSON(){
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
InputStream stream = conn.getInputStream();

String data = convertStreamToString(stream);

readAndParseJSON(data);
stream.close();

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

thread.start();
}
static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}

}

最佳答案

您在此示例中看到的可能是一个 JSONArray。

JSONArray arr = json.getJSONArray("array");
JSONObject obj = arr.getJSONObject(0);

在你的例子中,我在这个 JSON 中没有看到任何数组,你代码中的 head 是一个 JSONObject。要获取 item_content_text,您只需要 head.getString("item_content_text");

您可以执行此操作以获取 JSON 中的所有子项:

html = head.getString("item_content_text");
JSONObject children = head;
while (children.containsKey("children")) {
children = children.getJSONObject("children");
html += children.getString("item_content_text");
}

关于java - 使用 getJSONObject(int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23703431/

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