dac*_*cwe 66
首先,您需要下载URL(作为文本):
private static String readUrl(String urlString) throws Exception {
BufferedReader reader = null;
try {
URL url = new URL(urlString);
reader = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuffer buffer = new StringBuffer();
int read;
char[] chars = new char[1024];
while ((read = reader.read(chars)) != -1)
buffer.append(chars, 0, read);
return buffer.toString();
} finally {
if (reader != null)
reader.close();
}
}
Run Code Online (Sandbox Code Playgroud)然后你需要解析它(这里你有一些选择).
GSON(完整示例):
static class Item {
String title;
String link;
String description;
}
static class Page {
String title;
String link;
String description;
String language;
List<Item> items;
}
public static void main(String[] args) throws Exception {
String json = readUrl("http://www.javascriptkit.com/"
+ "dhtmltutors/javascriptkit.json");
Gson gson = new Gson();
Page page = gson.fromJson(json, Page.class);
System.out.println(page.title);
for (Item item : page.items)
System.out.println(" " + item.title);
}
Run Code Online (Sandbox Code Playgroud)
输出:
javascriptkit.com
Document Text Resizer
JavaScript Reference- Keyboard/ Mouse Buttons Events
Dynamically loading an external JavaScript or CSS file
Run Code Online (Sandbox Code Playgroud)尝试json.org的java API :
try {
JSONObject json = new JSONObject(readUrl("..."));
String title = (String) json.get("title");
...
} catch (JSONException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)ccp*_*zza 11
GSON有一个构建器,它接受一个Reader对象:fromJson(Reader json,Class classOfT).
这意味着您可以从URL创建一个Reader,然后将其传递给Gson以使用该流并进行反序列化.
只有三行相关代码.
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Map;
import com.google.gson.Gson;
public class GsonFetchNetworkJson {
public static void main(String[] ignored) throws Exception {
URL url = new URL("https://httpbin.org/get?color=red&shape=oval");
InputStreamReader reader = new InputStreamReader(url.openStream());
MyDto dto = new Gson().fromJson(reader, MyDto.class);
// using the deserialized object
System.out.println(dto.headers);
System.out.println(dto.args);
System.out.println(dto.origin);
System.out.println(dto.url);
}
private class MyDto {
Map<String, String> headers;
Map<String, String> args;
String origin;
String url;
}
}
Run Code Online (Sandbox Code Playgroud)
如果你碰巧得到403错误代码与端点,否则其工作正常(例如与
curl
或其他客户端),然后可能的原因可能是端点需要一个User-Agent
标头,默认情况下Java URLConnection没有设置它.一个简单的解决方法是添加到文件的顶部,例如System.setProperty("http.agent", "Netscape 1.0");
.
小智 10
您可以使用org.apache.commons.io.IOUtils进行下载,使用org.json.JSONTokener进行解析:
JSONObject jo = (JSONObject) new JSONTokener(IOUtils.toString(new URL("http://gdata.youtube.com/feeds/api/videos/SIFL9qfmu5U?alt=json"))).nextValue();
System.out.println(jo.getString("version"));
Run Code Online (Sandbox Code Playgroud)