java - 从数据库获取对象时,java.lang.String类型的值连接无法转换为JSONObject

标签 java android json

我正在尝试从数据库中检索 json 记录。通过浏览器检索 GET 请求时,我的 json 响应具有此结构并返回适当的数据

[{"name":"OOGOGOGO","address":"OPOPOPOP","gender":"OPOPOPOP","email":"OPOPOPOP","phonenumber":"OPOPOPOP","nationality":"OPOOPOPO","fk":1}]

我正在异步任务 doinbackground 中调用端点 url,这是端点

url = new URL("http://10.0.2.2:88/example/web/app_dev.php/get/1");

上述端点返回405状态代码错误。在 try catch json 异常时,我收到此错误

error gotten org.json.JSONException: Value Connection of type java.lang.String cannot be converted

对该端点可能出现的问题感到困惑,因为它从 postman 返回了 200 ok json 响应。请帮忙

最佳答案

这是代码 fragment 。

public class MainActivity extends AppCompatActivity {

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

    // Fetch network data
    new NetworkAsyncTask().execute("http://www.mocky.io/v2/591f32f4110000d10307b4c7");
}

private class NetworkAsyncTask extends AsyncTask<String, Void, String> {

    protected String doInBackground(String... strings) {
        try {
            URL url = new URL(strings[0]);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.connect();
            InputStream in = conn.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder stringBuilder = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                stringBuilder.append(line);
            }
            return stringBuilder.toString();
        } catch (Exception e) {
            return null;
        }
    }

    protected void onPostExecute(String result) {
        if (result != null) {
            Log.d("TAG", "Success! Result: " + result);
            processResult(result);
        } else {
            Log.d("TAG", "Failed, no data");
        }
    }

    private void processResult(String result) {
        try {
            JSONArray jsonArray = new JSONArray(result);
            JSONObject nameObject = jsonArray.getJSONObject(0);
            String name = nameObject.optString("name");
            Log.d("TAG", "name: " + name);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}
}

有关 Android 上的网络和 JSON 的更多信息,我建议您阅读本指南:

https://guides.codepath.com/android/Sending-and-Managing-Network-Requests https://guides.codepath.com/android/Converting-JSON-to-Models

关于java - 从数据库获取对象时,java.lang.String类型的值连接无法转换为JSONObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075910/

相关文章:

java - 使用 jettison 库在 JAVA 中进行 JSON 迭代

php - 我如何从android中的php服务器获取这个json数据

javascript - JSON 列表中元素的顺序是否保留?

java - 使用 TARSOS DSP 从 WavFiles JAVA 中提取 MFCC 的困难

java - Android: ListView 中的复选框(如何在适配器中创建OnCheckedChangeListener)

当从另一个类作为主要 Activity 调用它时,Android Alertdialog 崩溃并出现 "Unable to add window"异常

android - 在 Google Cloud 中保存 Android 应用程序数据

java - com.android.settings(ICS)有哪些依赖

java - LibGDX 中 music.class 的 TweenAccessor

java - 使用 getValue(Boolean.class) 时的 Firebase 数据库 NullPointerException