2017-03-21 6 views
0

JsonWriteとJsonReaderを使用してAndroidアプリケーションを開発しました。これは、これが唯一のすべてではない私のコードJSON配列の読み込みJsonReaderの使用

private ArrayList<StudentListModel> readUser(JsonReader reader) throws IOException { 
     String rowId = null; 
     String userId = null; 
     String userName = null; 
     StudentListModel model = null; 
     ArrayList<StudentListModel> userList = new ArrayList<>(); 
     reader.beginObject(); 
     while (reader.hasNext()) { 
      String name = reader.nextName(); 
      if (name.equals("rowId")) { 
       rowId = reader.nextString(); 
      } else if (name.equals("userId")) { 
       userId = reader.nextString(); 
      } else if (name.equals("userName")) { 
       userName = reader.nextString(); 
      } else { 
       reader.skipValue(); 
      } 
      model = new StudentListModel(rowId, userId, userName); 
     } 
     userList.add(model); 
     reader.endObject(); 
     return userList; 
    } 

上記のコードは、(リストの下)は、第2のリストを返している私のJSON配列

[StudentListModel{rowId='1', userId='User1', userName='Vijil'}, StudentListModel{rowId='2', userId='User2', userName='Dhas'}] 

あります。

StudentListModel{rowId='2', userId='User2', userName='Dhas'} 

私はループセクションでエラーが発生しました。これを出すのを手伝ってください。

は、今私は以下のコードで固定:今すぐ正しい作業

boolean isRowAdded = false, isIdAdded = false, isNameAdded = false; 
while (reader.hasNext()) { 
      String name = reader.nextName(); 
      if (name.equals("rowId")) { 
       rowId = reader.nextString(); 
       isRowAdded = true; 
      } else if (name.equals("userId")) { 
       userId = reader.nextString(); 
       isIdAdded = true; 
      } else if (name.equals("userName")) { 
       userName = reader.nextString(); 
       isNameAdded = true; 
      } else { 
       reader.skipValue(); 
      } 
      model = new StudentListModel(rowId, userId, userName); 

      if (isRowAdded && isIdAdded && isNameAdded) { 
       userList.add(model); 
       /** 
       * reset insitial status for next iteration 
       */ 
       isRowAdded = false; 
       isIdAdded = false; 
       isNameAdded = false; 
      } 
     } 

が、私はすべての問題に直面して以降で分からないのですか?

+0

このコードを貼り付けhttps://jsonformatter.curiousconcept.com/ ちょうどコピーし、JSONコードとチェックを貼り付けそれは上記のリンク –

答えて

0

すべての配列を解析した後にモデルをユーザーリストに追加します。したがって、最後に解析した値だけを追加します。 userList.add(model)呼び出しをループに移動するだけです。

0
while (reader.hasNext()) { 
     String name = reader.nextName(); 
     if (name.equals("rowId")) { 
      rowId = reader.nextString(); 
     } else if (name.equals("userId")) { 
      userId = reader.nextString(); 
     } else if (name.equals("userName")) { 
      userName = reader.nextString(); 
     } else { 
      reader.skipValue(); 
     } 
     model = new StudentListModel(rowId, userId, userName); 

userList.add(model); 

    } 

JSONコードの構造は、以下のURLでそれをチェックINVAILD.Pleaseある

+0

で私はすでにこれを試して、これは私の問題を解決しないたびにuserListは更新され、これは結果です[SocketResponseModel {requestToken = '001'、requestStatus = 'SUCCESS'、responseList = StudentListModel {rowId = '1'、userId = '1'、userId = 'h'、userName = 'null'}、StudentListModel {rowId = '1'、userId = 'null' userId = 'h'、userName = 'j'}、StudentListModel {rowId StudentListModel {rowId = '2'、userId = '2'、userId = '2'、userId = '2'、userId = 'h'、userName = 'j' json '、userName =' hjjk '}]}] – user3068659

+0

JSONを解析するためにGSONを試すことができます。こちらをご覧くださいhttps://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html – xbadal

関連する問題