簡體   English   中英

Google的Freebase API:Java中的基本MQL查詢和JSON解析示例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM