Android 解析AsyncTask中字符串形式的JSON数据

Android 解析AsyncTask中字符串形式的JSON数据,android,json,android-asynctask,Android,Json,Android Asynctask,我做了一个异步任务,使用Node.js和RESTful API检索数据。我正在将输入存储在StringBuilder中,但问题是我想从结果中检索一个键:值对(Error:true/false)。由于结果不是JSON格式的,所以我不能使用.get(“Element”)方法。这是我的任务: class RegisterAsync extends AsyncTask<String , Void, Integer> { @Override protected Integer do

我做了一个异步任务,使用Node.js和RESTful API检索数据。我正在将输入存储在StringBuilder中,但问题是我想从结果中检索一个键:值对(
Error:true/false
)。由于结果不是JSON格式的,所以我不能使用
.get(“Element”)
方法。这是我的任务:

class RegisterAsync extends AsyncTask<String , Void, Integer> {

@Override     
protected Integer doInBackground(String... params) {
    String toDO = params[0];
    StringBuilder sb = new StringBuilder();
    Boolean isError = false;
    int toReturn;
    try {

        URL url = new URL("http://192.168.0.14:3030/api/insert");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setDoOutput(true);
        con.setRequestMethod("POST");
        con.setRequestProperty("Content-Type", "application/json");
        OutputStream os = con.getOutputStream();
        os.write(toDO.getBytes());
        os.flush();
        BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String line = "";
        while((line = reader.readLine())!=null){
            sb.append(line + '\n');
        }
        reader.close();
        Log.d("RecvdToRegisterAsync: " , sb.toString());

        //got result in sb... What next???


    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (ProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return null;

}
类注册表同步扩展异步任务{
@凌驾
受保护的整数doInBackground(字符串…参数){
字符串toDO=params[0];
StringBuilder sb=新的StringBuilder();
布尔isError=false;
int toReturn;
试一试{
URL=新URL(“http://192.168.0.14:3030/api/insert");
HttpURLConnection con=(HttpURLConnection)url.openConnection();
con.设置输出(真);
con.setRequestMethod(“POST”);
con.setRequestProperty(“内容类型”、“应用程序/json”);
OutputStream os=con.getOutputStream();
write(toDO.getBytes());
os.flush();
BufferedReader=new BufferedReader(new InputStreamReader(con.getInputStream());
字符串行=”;
而((line=reader.readLine())!=null){
sb.追加(第+'\n'行);
}
reader.close();
d(“RecvdToRegisterAsync:,sb.toString());
//在某人身上得到了结果…接下来呢???
}捕获(格式错误){
e、 printStackTrace();
}捕获(协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}

}

您可以根据响应字符串将字符串转换为JSONObject或JSONArray。像这样:

    JSONObject response = new JSONObject(sb.toString());
    String key=response.get("key");
我希望有帮助。

试试这个;)


添加结果数据。你应该发布你的json响应(如果不是json…发布你的get响应)以及你如何尝试获取信息。你的响应是哪种格式?你的响应是什么样的?你想让它怎么展示?
   jsonResponse = new String(serverResponse, "UTF-8");
   JSONObject jObject = new JSONObject(jsonResponse);
   JSONObject json= jObject.getJSONObject("data");
    //there is the data in String format
   String data= json.getString(objectToFind);