Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将字符串转换为json_Java_Android - Fatal编程技术网

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
中执行,或者确保在此循环之前执行