2017-05-30 49 views
-2

謝謝你的採訪。適用於Java的JSON API。 JsonParser到JsonObjects和JsonArrays

我正在處理一個問題,我需要能夠將Json存儲到內存中,並且能夠「圍繞」鍵進行「導航」。

我能夠使用Json.createParser()方法,並在參數中使用FileReader來獲取我的系統中的文件。我的問題是,從那裏我還沒有辦法讓JsonParser對象JsonObject讀取值。

我使用的包裹是javax.json

我想能夠瀏覽Json數據我很容易使用JsonObject和JsonArray,但使用JsonParser對象。

謝謝你的時間。

+0

你是什麼意思的「導航」周圍的鑰匙? JsonParser是相當低級的。它可以讓你將JSON解釋爲一個鍵入的令牌流。如果您只是想將整個樹讀入內存,您可能對JsonReader更感興趣。 –

+0

我想我的意思是我通常想深入到對象的數組對象的對象中。我要去看JsonReader謝謝。 – JoeS

回答

1

好吧我想通了。

這裏是JSON的樣子:

{ 
    "name": "Changed name", 
    "Items": 
     [ 
      {"item1": "the_fist_item"}, 
      {"item2": "the_second_item"}, 
      {"item3": "the_second_item"} 
     ] 
} 

那麼Java裏面...

import java.io.FileReader; 
import javax.json.*; 

public class JsonTester 
{ 
    public static void main(String[] args) 
    { 
    try 
    { 

     JsonReader json_file = Json.createReader(new FileReader("***the directory to the json file***")); 
     JsonObject json_object = json_file.readObject(); 

     String the_second_item = json_object.getJsonArray("Items").getJsonObject(1).get("item2").toString(); 

     System.out.println(the_second_item); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    } 
} 

的導航部分,我試圖完成是the_second_item。 get()方法可以深入到Json文件中,以獲得我想要的特定值。

感謝David Ehrmann的幫助。