java - 在 Android Studio 中解析 JSONArray
问题描述
我尝试从 AndroidStudio 中的 PHP 脚本解析 JSONArray。我从我的 PHP 脚本中得到这个 JSON 响应:
[{"0":"Firstname","meta_value":"Firstname"},{"0":"Lastname","meta_value":"Lastname"},{"valid":"1"},{"entered":"5"}]
现在我尝试解析 JSONArray 以获取值meta_value
,所以我想获取“姓氏”和“名字”。
但是我的代码中一定有错误,因为我得到了响应:Exception: No value for meta_value
public class SendPostRequest extends AsyncTask<String, Void, String> {
String data ="";
String dataParsed = "";
String singleParsed ="";
protected void onPreExecute(){}
protected String doInBackground(String... arg0) {
try {
URL url = new URL("https://sample.com/code2.php"); // here is your URL path
JSONObject postDataParams = new JSONObject();
postDataParams.put("sdata", scannedData);
Log.e("params",postDataParams.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
BufferedReader in=new BufferedReader(new
InputStreamReader(
conn.getInputStream()));
StringBuffer sb = new StringBuffer("");
String line="";
while((line = in.readLine()) != null) {
data = data + line;
sb.append(line);
break;
}
in.close();
JSONArray reader2 = new JSONArray(data);
for(int i =0 ;i <reader2.length(); i++){
JSONObject JO = (JSONObject) reader2.get(i);
singleParsed = "Name:" + JO.get("meta_value") + "\n";
dataParsed = dataParsed + singleParsed +"\n" ;
}
return dataParsed;
}
else {
return new String("false : "+responseCode);
}
}
catch(Exception e){
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), result,
Toast.LENGTH_LONG).show();
}
}
请不要将我的答案标记为重复,因为我搜索了 2 周但没有找到答案!谢谢:)
解决方案
我建议您使用 GSON 来序列化和反序列化您的 JSON 响应。这使得它很容易处理。格森。
样本:
new Gson().fromJson("YourJsonHere",JsonElement.class);
干杯塔里克
推荐阅读
- opencart - Opencart 结帐页面上的自定义输入字段:3
- python - 使用 numpy.ndarray 填充数据框中的缺失值
- powershell - 用于从 servicenow 更新 ldap 数据的 Powershell 脚本
- javascript - 从 CDN 导入 Materializecss 并让选择下拉菜单在 ReactJS 中工作?
- typescript - 为什么将不可为 null 的值设置为 null 时 TypeScript 不发出警告?
- angular - 无法在 PrimgNg 表中过滤(Angular,primeNg)
- gremlin - Gremlin 选择性遍历
- c# - 在 dispose 上更改线程静态值不适用于异步
- excel - microsoft Excel 2016 中的自动排序日期
- javascript - 可以在 Firebase 中进行自定义身份验证吗