- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试解析一个 JSON 对象,但遇到了一个空指针错误,以及一个 Value Cannot of type java.lang.String cannot be converted to JSONObject 错误。我的代码如下。如果有任何帮助,我将不胜感激。
06-30 14:48:18.151: E/JSON Parser(10231): Error parsing data org.json.JSONException: Value Cannot of type java.lang.String cannot be converted to JSONObject
06-30 14:48:18.156: E/AndroidRuntime(10231): FATAL EXCEPTION: main
06-30 14:48:18.156: E/AndroidRuntime(10231): Process: rafa.weatherapp, PID: 10231
06-30 14:48:18.156: E/AndroidRuntime(10231): java.lang.NullPointerException
06-30 14:48:18.156: E/AndroidRuntime(10231): at rafa.weatherapp.MainActivity$AsyncTaskParseJson.onPostExecute(MainActivity.java:72)
06-30 14:48:18.156: E/AndroidRuntime(10231): at rafa.weatherapp.MainActivity$AsyncTaskParseJson.onPostExecute(MainActivity.java:1)
06-30 14:48:18.156: E/AndroidRuntime(10231): at android.os.AsyncTask.finish(AsyncTask.java:632)
06-30 14:48:18.156: E/AndroidRuntime(10231): at android.os.AsyncTask.access$600(AsyncTask.java:177)
06-30 14:48:18.156: E/AndroidRuntime(10231): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
06-30 14:48:18.156: E/AndroidRuntime(10231): at android.os.Handler.dispatchMessage(Handler.java:102)
06-30 14:48:18.156: E/AndroidRuntime(10231): at android.os.Looper.loop(Looper.java:146)
06-30 14:48:18.156: E/AndroidRuntime(10231): at android.app.ActivityThread.main(ActivityThread.java:5602)
06-30 14:48:18.156: E/AndroidRuntime(10231): at java.lang.reflect.Method.invokeNative(Native Method)
06-30 14:48:18.156: E/AndroidRuntime(10231): at java.lang.reflect.Method.invoke(Method.java:515)
06-30 14:48:18.156: E/AndroidRuntime(10231): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
06-30 14:48:18.156: E/AndroidRuntime(10231): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
06-30 14:48:18.156: E/AndroidRuntime(10231): at dalvik.system.NativeStart.main(Native Method)
这是我的 MainActivity
package rafa.weatherapp;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
TextView textview = null;
JSONObject currentTemperature = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textview = (TextView) findViewById(R.id.textview);
// we will using AsyncTask during parsing
new AsyncTaskParseJson().execute();
}
// you can make this class as another java file so it will be separated from your main activity.
public class AsyncTaskParseJson extends AsyncTask<String, String, String> {
final String TAG = "AsyncTaskParseJson.java";
// set your json string url here
String yourJsonStringUrl = "https://api.forecast.io/forecast/5530508d3568e57848d53bf10cfade1f/37.8267,-122.42";
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... arg0) {
try {
// instantiate our json parser
JSONParser jParser = new JSONParser();
// get json string from url
JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);
JSONObject weatherData = new JSONObject();
currentTemperature = weatherData.getJSONObject("currently");
currentTemperature.getString("temperature").toString();
textview = (TextView) findViewById(R.id.textview);
textview.setText((CharSequence) currentTemperature);
Toast.makeText(MainActivity.this, "Text set", Toast.LENGTH_LONG);
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String strFromDoInBg) {
currentTemperature.toString();
textview.setText((CharSequence) (currentTemperature));
}
}
}
最佳答案
我看到几个问题:
doInBackground()
onCreate
方法中初始化您的 textView。weatherData
中获取您从未使用 json 初始化的数据。public class AsyncTaskParseJson extends AsyncTask<String, String, String> {
String yourJsonStringUrl = "https://api.forecast.io/forecast/5530508d3568e57848d53bf10cfade1f/37.8267,-122.42";
@Override
protected String doInBackground(String... url) {
String temperature = "";
try {
// instantiate our json parser
JSONParser jParser = new JSONParser();
// get json string from url
JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);
JSONObject currentData = json.getJSONObject("currently");
temperature = currentTemperature.getString("temperature");
} catch (JSONException e) {
e.printStackTrace();
}
return temperature;
}
@Override
protected void onPostExecute(String currentTemp) {
textview.setText((CharSequence) (currentTemp));
}
}
当我再次阅读错误时:
解析数据时出错 org.json.JSONException: Value Cannot of type java.lang.String cannot be converted to JSONObject
似乎 jParser.getJSONFromUrl()
没有返回 JSONObject
而是一个字符串,在这种情况下,您应该将字符串传递给 JSONObject
构造函数:
String jsonString = jParser.getJSONFromUrl(yourJsonStringUrl);
JSONObject json = new JSONObject(jsonString);
但是你写了这个函数,只有你知道它返回什么。
关于java - JSON 解析和 NullPointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24496968/
当在类的开头使用上下文和资源初始化 MediaPlayer 对象时,它会抛出 NullPointer 异常,但是当在类的开头声明它时(因此它是 null),然后以相同的方式初始化它在onCreate方
在这个问题中NullPointer when call entity Manager建议将 @Autowire DAO 添加到 Controller 中。我做到了并且工作正常。然后我在 DaoImpl
我被分配了一个项目,我必须在java中创建一个登录系统,使用filein将帐户写入数组,并通过确认输入用户名与中的用户名相同来使用该数组进行登录数组。我的用户名和密码位于正在读取的 .txt 文件中的
我得到了以下代码: - (void) hide_waiting_activity { [UIView beginAnimations:nil context:NULL]; {
在为学校开发一个程序时,我创建了一个方法,该方法根据您为该方法提供的值返回数组的索引。该方法抛出 NullPointerException 但数组的每个索引都已被实例化。为了说明这一点,我创建了一个执
在我的 JSP 页面上,我需要显示一个列表,其中包含/public 文件夹中当前存在的所有文件。 这是一个带有 spring 和 hibernate 的 j2ee 项目。在我的用于获取包含所有文件的列
当我更新大量 JavaFX 图表时,我收到以下 NullpointerException: java.lang.NullPointerException at com.sun.scenario
我是 android 编程的新手,但不是 Java。 我在以下位置收到有关 NPE 的错误消息: 12-09 10:29:58.247: D/dalvikvm(471): GC freed 711 o
我有两个 java 类。 Schedule 是使用名为 deadline 的作业数组的主要类。我在将任何东西放入数组时遇到问题。我有一个 for 循环,它从文本文件中读取数据(它工作正常)并将某些数据
我正在尝试从我的项目目录访问一个文件,我们称它为 src/main/project/foo/bar.txt 在类MyClass 但是当我这样做的时候: InputStream is = MyClass
您好,在我的应用程序中实现搜索小部件时遇到问题。它似乎无法找到菜单项的“actionview”,但它可以很好地找到该项目。 我四处寻找答案,但没有看到明确的解决方案。 这是我用 XML 声明的菜单
我不确定为什么会收到此错误,它以前是有效的,我们将不胜感激。尝试在微调器选择时产生一个新 Activity (我有一个内部有 ListView 的工作版本,我决定分支尝试微调器,走了很远然后迷路了试图
我得到一个 NullPointerException在我第一次使用 createEntityManager() 连接到数据库时,在我的 tomcat 控制台上.我正在使用: apache tomcat
我目前正在处理一个项目,该项目使用 JFrame 在 GUI 上运行。 我想尽可能清楚我的问题是什么,我正在使用 3 个包(实体、控制(管理器)、边界(GUI))。 边界进口控制,控制进口实体。 在
我正在将S3的 Parquet 文件加载到在EMR机器中运行的Hive数据仓库中: Release: emr-5.1.0Hadoop distribution: Amazon 2.7.3Applica
我有一个如下所示的方法: try { doStuff(); } catch (Exception ex) { logger.error(ex); } (我并没有真正使用像 doStuff 这样
谁能告诉我这段代码有什么问题 我得到空指针异常,我假设是因为多个请求 @Service public class GernericMockingServiceImpl implements Gener
首先感谢您指出我在创建这篇文章时所犯的错误。 我尽可能缩小了代码范围,希望现在更清楚了。 因此,发生的问题是 NullPointer Exception 例如,当我尝试从一个场景(根)切换到另一个场景
我已经遇到这个非常烦人的问题几天了,而且我似乎无法完全解决它。我正在尝试打开 .csv 文件,因此我将其导入到项目的 res/raw/ 文件夹中。然后我尝试通过 getResources() 方法打开
我想做一个简单的java应用程序来播放视频。我特别希望它能够播放 mpeg4 和 mov 格式。 JMF 是我开始的地方,我有一个很好的工作示例。但是,不支持 mov 或 mpeg4 格式。我看过 X
我是一名优秀的程序员,十分优秀!