如何从android中的url获取json对象
Posted
技术标签:
【中文标题】如何从android中的url获取json对象【英文标题】:how to fetch json object from url in android 【发布时间】:2016-11-16 23:40:01 【问题描述】:我想从 json 对象中获取 json 数据。
我的 json 数据是:"avg":2.5
而我的 android 代码是
public class AsyncTaskParseJson extends AsyncTask < String, String, String >
final String TAG = "AsyncTaskParseJson.java";
// set your json string url here
String yourJsonStringUrl = "http://www.bsservicess.com/photoUpload/star_avg.php?bookName=" + book_name;
// contacts JSONArray
@Override
protected void onPreExecute()
@Override
protected String doInBackground(String...arg0)
try
JSONParser jParser = new JSONParser();
// get json string from url
JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);
// get the array of users
JSONObject dataJsonArr = json.getJSONObject(str);
String c = dataJsonArr.getString("avg");
na = c;
starts = Float.parseFloat(c);
catch (JSONException e)
e.printStackTrace();
return null;
@Override
protected void onPostExecute(String strFromDoInBg)
super.onPostExecute(strFromDoInBg);
netRate.setRating(starts);
Toast.makeText(mybookview.this, Float.toString(starts), Toast.LENGTH_SHORT).show();
但不知何故它不起作用。我已经尝试了每个教程和所有东西,但没有任何效果。请帮助我
【问题讨论】:
您能解释一下哪个部分不起作用吗?您是否尝试进入调试模式并查看每一步会发生什么?打开链接你可以在你的后端看到一个警告警告:Division by zero in /home/mohanmanali9/public_html/photoUpload/star_avg.php on line 30
其实我不知道如何从json对象中获取数据,我只是想知道从json对象中获取数据的方法
首先你需要一个模型类来映射你的json,那么你遵循的过程几乎是正确的。 here你可以找到一个很好的解释。
使用 Volley 库非常简单
1) Get your string from the server 2) Parse the JSON 假设您实际上是从 URL 获取 JSON
【参考方案1】:
这是从 url 示例中简单获取数据:
Parse JSON from HttpURLConnection object
如果你想使用库,那么试试 Volley: 教程链接:
http://www.androidhive.info/2014/05/android-working-with-volley-library-1/
【讨论】:
您在 jsonparsing 或从 url 获取 jsondata 的实际问题是什么? 有很多不错的网络库可供您使用。喜欢凌空androidhive.info/2014/05/android-working-with-volley-library-1【参考方案2】:您获得的 json 数据作为响应是 "avg":2.5 简单删除下面的代码
JSONObject dataJsonArr = json.getJSONObject(str);
String c = dataJsonArr.getString("avg");
下面一行
String c = json.getString("avg");
【讨论】:
srry 但它给了我一个错误:原因:java.lang.NullPointerException:尝试调用虚拟方法'java.lang.String org.json.JSONObject.getString(java.lang.String) ' 在空对象引用上【参考方案3】:一个非常简单的解决方案
String str = " \"avg\" :0 ";
JsonParser parser = new JsonParser();
JsonObject object = (JsonObject) parser.parse(str);
String value = object.get("avg").getAsString();
但首先您必须更正后端中的警告。
编辑完整的解决方案
public class AsyncTaskParseJson extends AsyncTask < String, String, String >
HttpURLConnection urlConnection;
@Override
protected String doInBackground(String...args)
StringBuilder result = new StringBuilder();
try
URL url = new URL("http://www.bsservicess.com/photoUpload/star_avg.php?bookName=" + book_name);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader( in ));
String line;
while ((line = reader.readLine()) != null)
result.append(line);
catch (Exception e)
e.printStackTrace();
finally
urlConnection.disconnect();
return result.toString();
@Override
protected void onPostExecute(String result)
JsonParser parser = new JsonParser();
JsonObject object = (JsonObject) parser.parse(result);
String value = object.get("avg").getAsString();
但首先从网络响应中删除警告!
【讨论】:
这不是从网络请求中获取 json @cricket_007 Nicky的问题不是从web请求中获取数据,因为asynctask的逻辑是正确的,问题在于解析数据。所以这个解决方案非常适合他的需求。 看不到jParser.getJSONFromUrl(yourJsonStringUrl);
的响应或实现怎么知道逻辑正确?
asynctask逻辑正确,解析阶段错误。你怎么会知道这事?因为我尝试使用相同的代码自己打开 url,并在发布解决方案之前修复了它。我决定只发布 json 部分,因为其余部分可以正常工作。当然,为了简单起见,Nicky 必须更改我硬编码的“str”。
但是这样我没有使用 url 所以我是怎么得到 json 对象的以上是关于如何从android中的url获取json对象的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Android 中的 JSON OR URL 获取特定数据? [关闭]
如何从android中的url解析多个JSON对象和数组?我正在使用一个示例,我希望在该示例中使用它,