gpt4 book ai didi

java - 在 Android Studio 中将 JSON 解析为 List [java]

转载 作者:行者123 更新时间:2023-11-30 02:19:53 25 4
gpt4 key购买 nike

我是 Java 的新手,现在我想解析来自 API 请求的数据。我已经测试了 JSONParse 中的所有类,但没有成功。

我使用由 Mini Sharma

我还从它返回的 URL 准备了一个 JSON:

{
"code": "100",
"message": "success",
"data": [
{
"FullName": "Marcelius Dagpin",
"Email": "mardagz@gmail.com",
"Android_ID": "e88244s1606091f6"
}
],
"time": "0.88044500350952 ms"
}

我的方法:

class PostRegistration extends AsyncTask<String, Void, Boolean> {
private ProgressDialog pgDialog;
//On Execute Progress
@Override
protected void onPreExecute() {
super.onPreExecute();
pgDialog.setMessage("Please wait while processing your registration");
pgDialog.setTitle("Processing");
pgDialog.show();
pgDialog.setCancelable(false);
}

@Override
protected void onPostExecute(final Boolean status) {
if(pgDialog.isShowing()) {
pgDialog.dismiss();
}
}

//Running on background
@Override
protected Boolean doInBackground(String... args) {
JSONParser jsonParser = new JSONParser();

try {
JSONArray json = jsonParser.getJSONFromURL(args[0]); //http://localhost/dev/?request=post&type=user&value=VALUEHERE
JSONObject jsono = json.getJSONObject(0);

Log.d("Tag", jsono.toString());
}catch(Exception e) {
e.printStackTrace();
}

return null;
}

}

我在运行这段代码时遇到错误。

这是日志:

    02-27 02:00:00.077    2180-2180/com.sprikiwiki_lab.dev.practice1 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.sprikiwiki_lab.dev.practice1, PID: 2180
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sprikiwiki_lab.dev.practice1/com.sprikiwiki_lab.dev.practice1.RegistrationActivity}: java.lang.NullPointerException: println needs a message
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2318)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:149)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.println_filter(Log.java:105)
at android.util.Log.d(Log.java:166)
at com.sprikiwiki_lab.dev.practice1.RegistrationActivity.onCreate(RegistrationActivity.java:79)
at android.app.Activity.performCreate(Activity.java:5411)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396)
            at android.app.ActivityThread.access$800(ActivityThread.java:139)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:149)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
            at dalvik.system.NativeStart.main(Native Method)
02-27 02:00:01.367 2180-2180/com.sprikiwiki_lab.dev.practice1 I/Process﹕ Sending signal. PID: 2180 SIG: 9

老实说。

任何人都可以帮助我或提出建议。

谢谢

最佳答案

我分析了您的代码,发现了一些问题。我将逐步描述它:

首先在 android 中,当您想要连接互联网时,您必须在您的 list 中注册权限。

<uses-permission android:name="android.permission.INTERNET"/>

第二点是如何设置DATA_URL

这里你初始化一个变量

private static String DATA_URL = null;

在这里你要设置它

   try {
//...
String DATA_URL = "http://dev.sprikiwiki-lab.com/?request=get&uid=1";
}catch (Exception e) {
//...
}

但是您创建了新变量 - 您必须像下面这样删除 String:

   try {
//...
DATA_URL = "http://dev.sprikiwiki-lab.com/?request=get&uid=1";
}catch (Exception e) {
//...
}

此外,您还可以删除静态 :)

下一个问题是在 getJSONFromUrl 方法内部。您将 url 作为参数传递,但您什么都不做。改线打击:

     HttpGet httpGet = new HttpGet();

用这个:

     HttpGet httpGet = new HttpGet(url);

最后一期是关于你的方法的结尾。您创建 new JSONArray(builder);。您应该在此处创建 newJSONObject(builder),如下所示:

     //Parse string to JSON object
try {
jarray = new JSONObject(builder.toString());
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}

//Return json to array
return jarray;

此外,您必须将 jarray 的类型更改为 JSONObject 并返回 getJSONFromURL 方法的类型

关于java - 在 Android Studio 中将 JSON 解析为 List [java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28749717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com