我正在尝试将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文件。