Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 非常简单的JSONObject在设计时未报告的异常org.json.JSONException_Java_Android_Json_Jsonobject - Fatal编程技术网

Java 非常简单的JSONObject在设计时未报告的异常org.json.JSONException

Java 非常简单的JSONObject在设计时未报告的异常org.json.JSONException,java,android,json,jsonobject,Java,Android,Json,Jsonobject,这很简单:使用Android Studio,我无法构建项目,因为我遇到了错误: 错误:java:unreported exception org.json.JSONException;必须被抓住,否则 宣布被抛出 以下是违规代码: 我正在导入org.json.JSONObject;顺便说一下 扭曲的红线位于“新JSONObject(json)”下面。它似乎不喜欢被传递一个字符串,但我所看到的每一个地方都表明它可以 我已经尝试使类和方法成为非静态的,并且重建了projhect/重新启动了andro

这很简单:使用Android Studio,我无法构建项目,因为我遇到了错误:

错误:java:unreported exception org.json.JSONException;必须被抓住,否则 宣布被抛出

以下是违规代码:

我正在导入org.json.JSONObject;顺便说一下

扭曲的红线位于“新JSONObject(json)”下面。它似乎不喜欢被传递一个字符串,但我所看到的每一个地方都表明它可以

我已经尝试使类和方法成为非静态的,并且重建了projhect/重新启动了androidstudio


我知道这一定是我错过的简单的东西…

你必须使用
try catch
Throw
JSONException

public static JSONObject toJsonObject(String json){
    try{
            JSONObject jsonObj = new JSONObject(json);
            return jsonObj;
    }
    catch (JSONException e)
    {
    //do something
    }
  }

您必须使用
try catch
Throw
JSONException

public static JSONObject toJsonObject(String json){
    try{
            JSONObject jsonObj = new JSONObject(json);
            return jsonObj;
    }
    catch (JSONException e)
    {
    //do something
    }
  }

我认为这是因为您没有在代码中使用try-catch或throw。在代码中使用try-catch块。然后检查问题是否已解决。

我认为这是因为您没有在代码中使用try-catch或throw。在代码中使用try-catch块。然后检查问题是否已解决。

您几乎总是必须将所有JSONObject和JSONArray用法包装在捕获JSONException的try-catch块中。在大多数情况下,它是永远不会运行的样板代码。但是,在使用新的JSONObject(…)和新的JSONArray(…)的情况下,try-catch块是至关重要的:如果传递的字符串不是有效的JSON字符串,它会引发异常。确保你总是以某种方式处理它。在您的情况下,我建议这样做(其中TAG是类的名称):


如果您不在toJsonObject(…)-方法中放置try-catch块,而是在方法声明中添加“throws-JSONException”(这实际上可以解决错误),那么完整的方法将变得完全冗余,因为它没有做任何JSONObject构造函数没有做的事情。

您几乎总是必须将所有JSONObject和JSONArray用法包装在捕获JSONException的try-catch块中。在大多数情况下,它是永远不会运行的样板代码。但是,在使用新的JSONObject(…)和新的JSONArray(…)的情况下,try-catch块是至关重要的:如果传递的字符串不是有效的JSON字符串,它会引发异常。确保你总是以某种方式处理它。在您的情况下,我建议这样做(其中TAG是类的名称):


如果您不在toJsonObject(…)-方法中放置try-catch块,而是在方法声明中添加“throws-JSONException”(这实际上可以解决错误),那么完整的方法将变得完全冗余,因为它没有做任何JSONObject构造函数没有做的事情。

使用try-catch语句使用try-catch语句谢谢大家-我已经将此标记为答案,因为它有最好的描述,但是你没事!我添加了try-catch,它现在可以工作了。谢谢大家-我已经把它标记为答案,因为它有最好的描述,但是你没事!我添加了try-catch,现在它可以工作了。
public static JSONObject toJsonObject(String json){
    try {
        return new JSONObject(json);
    } catch (JSONException e) {
        Log.e(TAG, "Invalid JSON string: " + json, e);
        return null;
    }
}