2013-06-25 33 views
0

我必須重構我的應用程序的某些區域以使用Gson中的流API,但很快我遇到了一個奇怪的問題,我不知道如何解決。我的類上的以下構造函數接收JsonReader並應該循環對象的屬性。 LogCat顯示了第一個屬性輸出的名稱,然後是一個例外「預計名稱,但是BOOLEAN」。我只使用reader.nextName()詢問名稱。是什麼賦予了?GSON JsonReader給我的值而不是名稱?

JSON對象:

{ 
"IsActive":true, 
"LocationName":"Denver", 
... 
} 

Class構造:

public AppLocation(JsonReader reader){ 

     try { 
      reader.beginObject(); 
      while(reader.hasNext()){ 
       final String pName = reader.nextName(); 
       final boolean isNull = reader.peek() == JsonToken.NULL; 
       if(!isNull){ 
        Log.d("MENET", pName); 
       }else{ 
        reader.skipValue(); 
       } 
      } 
      reader.endObject(); 
     } catch (IOException e) { 
      Log.e("MENET", e.getMessage()); 
     } 

    } 

回答

1

使用該讀取器的流傳輸方法的效果與 「元件」,即名稱或值。

所以在第一個「元素」,這是一個名稱後,你會得到一個值。

除非你的代碼調用reader.nextName()這就是爲什麼它說:「預期的名稱......」


JsonReader下對Android網站一個很好的例子:

相關問題