我该如何解决java.lang.NullPointerException错误?

时间:2020-07-16 11:30:07

标签: java android json nullpointerexception

我正在尝试将JSON文件转换为JAVA对象,但出现某些错误。请帮助我解决错误。我是android新手,这是我面临的问题。我总是收到此java.lang.NullPointerException:运行我的应用程序时,尝试在null对象引用错误时调用虚拟方法'android.content.Context android.content.Context.getApplicationContext()'。 我猜上下文有一些问题。

2020-07-16 16:43:25.853 5339-5339/com.example.jsontojava E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.jsontojava, PID: 5339
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jsontojava/com.example.jsontojava.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6806)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
        at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:126)
        at com.example.jsontojava.JSON_to_JAVA.convert_json_to_java(JSON_to_JAVA.java:24)
        at com.example.jsontojava.MainActivity.onCreate(MainActivity.java:21)
        at android.app.Activity.performCreate(Activity.java:7224)
        at android.app.Activity.performCreate(Activity.java:7213)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)

这是Logcat的快照

MainActivity.java

package com.example.jsontojava;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {
    JSON_to_JAVA jsja = new JSON_to_JAVA();
    String string = null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try {
            string = jsja.convert_json_to_java();
            Log.d("Output",string);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

JSON_to_JAVA.java

package com.example.jsontojava;


import android.app.Activity;
import android.util.Log;

import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

/**
 * Created by Devanshu Mathur on 14-07-2020.
 */
class JSON_to_JAVA {
    Activity context = new Activity();


    utils utl = new utils();

    JSON_to_JAVA() {
    }

    public String convert_json_to_java() throws IOException {
            String jsonFileString = utl.getJsonFromAssets(context.getApplicationContext(), "info.json");
            ObjectMapper obj = new ObjectMapper();
            infoclass infobj = new infoclass();
            infobj = obj.readValue(jsonFileString,infoclass.class);

            String id = infobj.getId();

            String name = infobj.getName();

            String post = infobj.getPost();

            String str = "ID : "+id + "Name : " +name + "Post : "+post;
            return str;

        }
}

utils.java

package com.example.jsontojava;

import android.content.Context;

import java.io.IOException;
import java.io.InputStream;

/**
 * Created by Devanshu Mathur on 14-07-2020.
 */
public class utils {

    public String getJsonFromAssets(Context context, String fileName) {
        String jsonString;
        try {
            InputStream is = context.getAssets().open(fileName);

            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();

            jsonString = new String(buffer, "UTF-8");
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }

        return jsonString;
    }
}

infoclass.java

package com.example.jsontojava;

/**
 * Created by Devanshu Mathur on 14-07-2020.
 */
class infoclass {

    private String id;
    private String name;
    private String post;

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPost() {
        return post;
    }

    public void setPost(String post) {
        this.post = post;
    }
}

这些都是我所有的java文件。

0 个答案:

没有答案