“线程中的异常”;“主要”;java.lang.NullPointerException-JSon到java

“线程中的异常”;“主要”;java.lang.NullPointerException-JSon到java,java,json,arraylist,nullpointerexception,Java,Json,Arraylist,Nullpointerexception,我试图通过GSON将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(PrintStr

我试图通过GSON将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();
        }
用户类

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();
        }
儿童班

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();
        }

我搜索了很多东西,但找不到有助于解决这个问题的问题,我知道为什么会发生NullPointException,但不知道它是如何解决的。是的,我看过这个例子,但在这方面对我帮助不大(或者它可能会,但不确定)。感谢您的时间:)

根据您发布的代码,您的数组
ArrayList子项
为空。这将在您第一次尝试访问(用户U:child){的这一行时导致NullPointerException。您需要初始化子数组,如
ArrayList child=new ArrayList()

您的代码还存在许多其他问题。

根据您发布的代码,您的array
ArrayList子项
为空。这将在您第一次尝试访问(用户U:child)的这一行时导致NullPointerException{。您需要初始化子数组,类似于
ArrayList child=new ArrayList()

您的代码还有许多其他问题。

child
类中的
child
字段的名称不适合它,因为'child'的类型是User is
null
。而NullPointerException。因此,我认为您的映射有问题。我在
child
类中没有看到
children
字段
child
类中的
child
字段,其名称不适合,因为'child'的类型为User为
null
。而NullPointerException。因此,我认为您的映射有问题。我在
child
类中没有看到
children
字段。