2016-11-14 1 views
0

私はGSONとforループを使ってJavaでJson arraylist(子)を解析しようとしています。 しかし、私は次のエラーを取得しています:JSONArray配列=新しいJSONArray(string_of_json_array);

private String category; 
@SerializedName("children") 
@Expose 
private List<Child> children = new ArrayList<Child>(); 

public String getCategory() { 
return category; 
} 

public void setCategory(String category) { 
this.category = category; 
} 

public List<Child> getChildren() { 
return children; 
} 

public void setChildren(List<Child> children) { 
this.children = children; 
} 

ユーザークラス:

ここ

for each not applicable to expression type 
required:array or java.lang.iterable 
found:String 

これはツリークラスである

try { 
    br = new BufferedReader(new FileReader("user.json")); 
    Tree result = gson.fromJson(br, Tree.class); 

    if (result !=null){ 
     for (User t : result.getCategory()){ //ERROR IS HERE (squiggly red line) 
     System.out.println(t.getId() + "-" + t.getName() + "-" + t.getCategory() + "-" + t.getPercentage()); //ERROR IS ALSO HERE FOR EACH VARIABLES 
    } 
    } 


} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} finally { 
    if (br != null){ 

     try { 
      br.close(); 
     } catch (IOException e) { 
     e.printStackTrace(); 
     } 

    } 

このエラーを表示するメインのJavaクラスであります

private String id; 
@SerializedName("processed_lang") 
@Expose 
private String processedLang; 
@SerializedName("source") 
@Expose 
private String source; 
@SerializedName("tree") 
@Expose 
private Tree tree; 

public String getId() { 
return id; 
} 

public void setId(String id) { 
this.id = id; 
} 

public String getProcessedLang() { 
return processedLang; 
} 

public void setProcessedLang(String processedLang) { 
this.processedLang = processedLang; 
} 

public String getSource() { 
return source; 
} 

public void setSource(String source) { 
this.source = source; 
} 

public Tree getTree() { 
return tree; 
} 

public void setTree(Tree tree) { 
this.tree = tree; 
} 
    String getName() { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

誰かが私が間違っていた場所を教えてもらえますか?皆さんがjsonコードを見たいと思ったら、私もそれを置くことを私に教えてください。私はそれを配置しなかった理由は非常に長いためです。子供たちを表示するには?御時間ありがとうございます。

+3

を 'getCategory'がStringを返しますが、あなたの' for'ループの中でそれを反復処理しようとしています。ここで何を達成しようとしていますか? – Zircon

+0

申し訳ありませんが、私はそれを言いました。私はArraylist Childrenを展示しようとしています。 –

答えて

0

For-Eachループを使用するには、反復しようとするJavaオブジェクトのループにIterable<T>インターフェイスを実装する必要があります。 (あなたがコメントで述べたように)だけを使用childrenを反復処理する

:あなたはそれをするために、各ループ使用できるように

for (Child child : result.getChildren()){    
    System.out.println(child); 
} 

List<T>は、反復処理可能なインタフェースを実装しています。

続きを読む:The For-Each LoopIterable

+0

あなたの答えをありがとう、しかし、クラスのツリーからArraylistを表示する方法はありますか?おそらくすべての配列が表示されます。子供には1人のarraylistしか見えません。 –

+1

@ArdiAbdul申し訳ありませんが、私はポイントを得ることができません。あなたは何を持ちたいですか? –