Java 无法将字符串转换为json
我刚开始安卓系统的开发,我面临着一个我无法解决的问题 我使用Java 无法将字符串转换为json,java,android,Java,Android,我刚开始安卓系统的开发,我面临着一个我无法解决的问题 我使用Volley调用android应用程序中的API,得到以下响应: [ { "id": 25, "user_id": 39, "positionX": "51.4595484", "positionY": "5.4757402", "modified": "2016-12-15T00:00:00" }, { "id": 26, "user_id": 40, "p
Volley
调用android应用程序中的API,得到以下响应:
[
{
"id": 25,
"user_id": 39,
"positionX": "51.4595484",
"positionY": "5.4757402",
"modified": "2016-12-15T00:00:00"
},
{
"id": 26,
"user_id": 40,
"positionX": "51.4595518",
"positionY": "5.4757409",
"modified": "2016-12-15T00:00:00"
},
{
"id": 27,
"user_id": 41,
"positionX": "51.459554",
"positionY": "5.4757413",
"modified": "2016-12-15T00:00:00"
},
{
"id": 28,
"user_id": 42,
"positionX": "51.459554",
"positionY": "5.4757413",
"modified": "2016-12-15T00:00:00"
}
]
我正在尝试从JSONArray
获取数据,但无法使其正常工作。。。这是我的代码:
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
JSONObject jsonObject = jsonArray.getJSONObject(0);
for (int i = 0; i < jsonObject.length(); i++) {
JSONObject row = jsonObject.getJSONObject();
points.add(new LatLng(row.getDouble("positionX"),row.getDouble("positionY")));
}
Toast.makeText(getApplicationContext(), "Updated users info." + points.get(0).toString(), Toast.LENGTH_LONG).show();
} catch (JSONException e) {
Toast.makeText(getApplicationContext(), "error" + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
@覆盖
公共void onResponse(字符串响应){
试一试{
JSONArray JSONArray=新JSONArray(响应);
JSONObject JSONObject=jsonArray.getJSONObject(0);
for(int i=0;i
您只需从JSONArray
获取行,而不是第一个JSON
对象,因此只需执行此操作
1.)创建您的JSONAray
2.)遍历数组并使用索引获取JSONObject
3.)从第2步中检索的JSONObject
中获取数据
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject row = jsonArray.getJSONObject(i);
points.add(new LatLng(row.getDouble("positionX"),row.getDouble("positionY")));
}
JSONArray JSONArray=新的JSONArray(响应);
for(int i=0;i
改进:为了避免丢失键和值使用的异常,这些键和值使用可以处理丢失的值或字符串形式的值
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject row= jsonArray.getJSONObject(i)
points.add(new LatLng(row.getDouble("positionX"),row.getDouble("positionY")));
}
Toast.makeText(getApplicationContext(), "Updated users info." + points.get(0).toString(), Toast.LENGTH_LONG).show();
} catch (JSONException e) {
Toast.makeText(getApplicationContext(), "error" + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
@覆盖
公共void onResponse(字符串响应){
试一试{
JSONArray JSONArray=新JSONArray(响应);
for(int i=0;i
但我建议您使用Gson库来解析json,这在商业上是最好的
下载-
如何添加库-
如何使用它-或定义,但我无法使它工作,而且我面临一个无法解决的问题。什么问题?另外,使用gson
library可能会让你受益匪浅。请先阅读,然后再提问,因为这将帮助你从社区获得更多更好的答案。@Bonatti谢谢!我要检查一下嘿,当我尝试使用你的代码时,我的应用程序崩溃了。我收到以下错误:java.lang.NullPointerException:尝试在空对象上调用接口方法“boolean java.util.List.add(java.lang.Object)”reference@Barteo您只是忘记了在使用点列表之前初始化它,所以它应该是点=新的ArrayList()
您可以在oncreate
中执行,或者确保在此循环之前执行