Android 解析AsyncTask中字符串形式的JSON数据
我做了一个异步任务,使用Node.js和RESTful API检索数据。我正在将输入存储在StringBuilder中,但问题是我想从结果中检索一个键:值对(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
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);