2016-11-15 14 views
1

JSONコードをGSONからJavaにパースしようとしています。私は前に同様の例を作り、それが完全に働いたが、私は私のプログラムで実装しようとすると、エラーを与えています この上本当に立ち往生 "スレッド "main"の例外java.lang.NullPointerException - JSONからJavaへ

'Exception in thread "main" java.lang.NullPointerException 
at personality.Child.toString(Child.java:25) 
at java.lang.String.valueOf(String.java:2994) 
at java.io.PrintStream.println(PrintStream.java:821) 
at personality.Personality.main(Personality.java:48) 

、私は研究を行っているし、まだ見つけることができません透明な溶液。だから私はあなたたちに頼んでいる。

マイコード:

パーソナリティメインクラス

public class Personality { 

     public static void main(String[] args) throws IOException { 
      // TODO code application logic her 

     Gson gson = new Gson(); 

     Child C = gson.fromJson(new FileReader("user.json"), Child.class); 

     System.out.println(C); 
    } 
    } 

ユーザークラス

public class User { 
     public String category; 
     public String id; 
     public String name; 
     public double percentage; 
     public double sampling_error; 

     //Constructor 
     public User(String category, String id, String name , double percentage, double sampling_error) { 

      this.category = category; 
      this.id = id; 
      this.name = name; 
        this.percentage = percentage; 
        this.sampling_error = sampling_error; 
     }  
     @Override 
     public String toString() {   
      return "Category " + category + " : id = " + id + " name = " + name; 
     } 
    } 

託児クラス

public class Child { 
     public ArrayList <User> child; //Assign arraylist User to Child class 


     // toString override - not related to JSON processing, just included for debugging purposes 
     @Override 
     public String toString() { 

      StringBuilder A = new StringBuilder(); 


      A.append("Number of childrens = " + child.size() + "\n"); //Error points to here 

      for (User U : child) { 

       A.append(U.toString() + "\n"); //assigns Planet To string to 
      } 

      return A.toString(); 
     } 

JSONコード

{ 
"children": [ 
        { 
        "category": "personality", 
        "id": "Adventurousness", 
        "name": "Adventurousness", 
        "percentage": 0.7871810497070462, 
        "sampling_error": 0.0535169534 
        }, 
        { 
        "category": "personality", 
        "id": "Emotionality", 
        "name": "Emotionality", 
        "percentage": 0.9806198117683198, 
        "sampling_error": 0.0500385256 
        }, 
        { 
        "category": "personality", 
        "id": "Liberalism", 
        "name": "Authority-challenging", 
        "percentage": 0.9958295966962101, 
        "sampling_error": 0.08735455339999999 
        } 
       ] 
} 

私はNullPointExceptionはそれはit.Andを解決する方法がわからない発生した理由を、私はknidのを知って、多くのことを検索しましたが、この問題を解決することを助けることができる質問を見つけることができませんはい、私はこの例を見てきました - What is a NullPointerException, and how do I fix it?ですが、実際にはこの文脈ではあまり役に立ちません。ありがとうございます:)

+0

'child'は' null'なので 'Child'クラスは' child'クラスの名前がそれに合わない 'child'フィールドです。一方、NullPointerExceptionです。だから、私はあなたのマッピングに問題があると思います。私は 'Child'クラスの' children'フィールドを見ません。 – davidxxx

答えて

0

公開したコードに基づいて、配列ArrayList <User> childはnullです。最初にこの行にアクセスしようとすると、NullPointerExceptionが発生しますfor (User U : child) {。子配列をArrayList <User> child = new ArrayList<User>()のように初期化する必要があります。 あなたのコードには他にも多くの問題があります。

関連する問題