[英]Google’s Freebase API: Basic MQL Query and JSON Parse Example in Java?
從Java Freebase API(google-api-services-freebase)查詢使用MQL的Freebase的基本示例是什么樣的,以及處理結果數據的推薦方法是什么?
我特別想知道如何“正確”使用com.google.api.services.freebase.Freebase
類 。
我的項目中有這些依賴項:
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-freebase</artifactId>
<version>v1-rev42-1.17.0-rc</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson2</artifactId>
<version>1.17.0-rc</version>
</dependency>
現在使用以下代碼,我可以將未解析的JSON結果轉換為stdout:
Freebase freebase = new Freebase(
GoogleNetHttpTransport.newTrustedTransport(),
JacksonFactory.getDefaultInstance(),
null);
Mqlread mqlread = freebase.mqlread(
"[{ \"limit\": 5, \"name\": null, \"type\": \"/medicine/disease\" }]");
mqlread.executeAndDownloadTo(System.out);
但是解析返回的JSON的推薦方法是什么? 如果我不得不手動解析JSON結果流,為什么我要使用Freebase API呢?
注意:最終我想查詢更多的數據; 上面的查詢只是一個簡單的例子。
你是對的,因為它目前只有標准的Google Java客戶端庫,並不能提供比自己進行Freebase API調用更多的好處。 這是因為Freebase MQL API可以返回任意復雜的JSON數據,這使得客戶端庫很難對它做任何奇怪的事情。 我喜歡用於解析結果的json-simple庫。
以下代碼段使用Google HTTP客戶端庫和json-simple發出Freebase查詢並解析結果。
HttpTransport httpTransport = new NetHttpTransport();
HttpRequestFactory requestFactory = httpTransport.createRequestFactory();
JSONParser parser = new JSONParser();
String query = "[{\"limit\": 5,\"name\":null,\"type\":\"/medicine/disease\"}]";
GenericUrl url = new GenericUrl("https://www.googleapis.com/freebase/v1/mqlread");
url.put("key", "YOUR-API-KEY-GOES-HERE");
url.put("query", query);
HttpRequest request = requestFactory.buildGetRequest(url);
HttpResponse httpResponse = request.execute();
JSONObject response = (JSONObject)parser.parse(httpResponse.parseAsString());
JSONArray results = (JSONArray)response.get("result");
for (Object result : results) {
System.out.println(result.get("name").toString());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.