Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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
Android 从接收到的json创建JSONArray时出现问题_Android_Json_Arrays_Jsonobject - Fatal编程技术网

Android 从接收到的json创建JSONArray时出现问题

Android 从接收到的json创建JSONArray时出现问题,android,json,arrays,jsonobject,Android,Json,Arrays,Jsonobject,昨天它工作正常,今天我收到一条消息,比如:java.lang.String类型的值不能转换为JSONArray 这是我收到的json: 当我尝试从以下位置执行JSONArray时,代码停止: private class HttpAsyncTaskFamilies extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... urls) { retu

昨天它工作正常,今天我收到一条消息,比如:java.lang.String类型的值不能转换为JSONArray

这是我收到的json:

当我尝试从以下位置执行JSONArray时,代码停止:

private class HttpAsyncTaskFamilies extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... urls) {
    return GET(urls[0]);
}

// onPostExecute displays the results of the AsyncTask
@Override
protected void onPostExecute(String result) {
    JSONArray jArray;
    String families = "";
    Log.d(TAG, "result in onPostExectute Families -> " + result);
    try {
        DatabaseHelper helper = new DatabaseHelper(
                getApplicationContext());

        try {
            helper.dropAndCreate(helper.getConnectionSource(),
                    Familia.class);

        // Do the inserts in table Familia
                jArray = new JSONArray(result);

                Log.d(TAG, "jsonArray -> " + jArray);
                for (int i = 0; i < jArray.length(); i++) {
                    JSONObject json = jArray.getJSONObject(i);
                    Log.d(TAG, "jsonObject -> " + json.toString());

                    String id = json.getString("familia_id");
                    Log.d(TAG, "id -> " + id);
                    int id_family = Integer.parseInt(json
                            .getString("familia_id"));

                    // for each Familia
                    Familia familia = new Familia(json.getInt("familia_id"),
                            json.getString("nom_familia"));
                    helper.getFamiliaDao().create(familia);
                    families += json.getString("nom_familia");
                    Log.d(TAG, "Familia inserida -> " + familia);
                }
                Log.d(TAG, "families actualitzades! " + families);

            } catch (SQLException e) {
                e.printStackTrace();
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}

得到响应后,您必须将
结果
转换为
JSONObject
like

JSONObject jsonObj = new JSONObject(result);
FamiliesArray = jsonObj.getJSONArray(Families);

我可以看出您没有注意到这一点。

您的代码没有错,但是 这些线路可能会产生问题 我还是不确定

评论这些行

Log.d(TAG,"arrayJson ->"+arrayJson.toString());
替换你的代码

Familia familia = new Familia(json.getInt("familia_id"),
                        json.getString("nom_familia"));


因为server send familia_id是字符串形式。希望这项工作…:)

您所指的代码似乎是正确的。可以修剪字符串并尝试将修剪后的字符串传递给JSONArray的构造函数吗


另一方面,我建议使用jackson解析器将JSON转换为类(对象)。示例可以在这里找到,

发布代码而不是照片。如何获得
结果的值?开头可能有一些非打印字符吗?@Chris检查我的answer@Override受保护的字符串doInBackground(String…url){return GET(url[0]);}以文本格式发布json字符串,而不是以图像的形式发布。实际上,该值是一个数组,而不是一个对象。所以你的建议行不通。但我在json中的一个数组中接收到3个对象。。。首先我需要做一个JSONArray,然后是一个循环,然后在这个循环中做JSONObject,对吗?就像我在消息中添加的代码一样。是的,但我想看看它正在创建的JSONArray。。。没有,因为应用程序在尝试创建JSONArray时崩溃…:-(Log.d(TAG,“jsonArray->”+jArray);现在检查这一行,因为这一行没有打印在您的日志中。嘿,只需在这个链接上检查您的json,因为对我来说,您的json格式显示无效[{“familia_id”:“28”,“nom_familia”:“Activitats f\u00c3\u00adsiques i esportives”},{“familia_id”:“29”,“nom_familia”:“Administraci\u00c3\u00b3 i gesti\u00c3\u00b3”},{“familia_id:“30”,“nom_familia:“Comer\u00c3\u00a7 i m\u00c3\u00a0rqueting”}是的,我很抱歉。我只是在尝试一些事情…这是为了做一个测试。但我也尝试了getString…两个都不起作用:-(你在哪个android版本上检查我真正的设备是API 10
Familia familia = new Familia(json.getInt("familia_id"),
                        json.getString("nom_familia"));
  Familia familia = new Familia(Integer.parseInt(json.getString("familia_id")),
                        json.getString("nom_familia"));