有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从Django到Android的java JSON数组

我无法解析从Django发送到Android的json数组字符串。这是json字符串的格式

[
    {
        "pk": 1,
        "model": "brete.brete",
        "fields": {
            "contenido": "93iw09if",
            "fecha": "2011-05-07 03:06:40",
            "codigo_confirmacion": "",
            "correo": "oij8@gmail.com",
            "activado": false,
            "titulo": "234"
        }
    },
    {
        "pk": 2,
        "model": "brete.brete",
        "fields": {
            "contenido": "asoidjfdiso",
            "fecha": "2011-05-07 03:08:09",
            "codigo_confirmacion": "",
            "correo": "oijoiji@oijoi.com",
            "activado": false,
            "titulo": "ijj"
        }
    }
]
etc

这就是我获取数据的方式:

        //parse json data
        try{
            JSONArray jArray = new JSONArray(result);
            for(int i=0;i<jArray.length();i++){
                JSONObject json_data = jArray.getJSONObject(i);
                Brete resultRow = new Brete();
                resultRow.contenido = json_data.getString("contenido");
                resultRow.fecha = json_data.getString("fecha");
                resultRow.correo = json_data.getString("correo");
                arrayOfWebData.add(resultRow);
            }
        }
        catch(JSONException e){
                Log.e("log_tag", "Error parsing data "+e.toString());
        }

我正在尝试获取'contenido''fecha''correo'的数据,但没有显示任何行。这不是全部代码,可能问题出在其他地方,但我有一种预感,这可能是一个没有正确解析带有json_数据的嵌套json的问题。getString()。感谢您的帮助


共 (1) 个答案

  1. # 1 楼答案

    在抓取字段之前,您实际上必须够到“字段”对象:

    //parse json data
    try{
        JSONArray jArray = new JSONArray(result);
        for(int i=0;i<jArray.length();i++){
            JSONObject buf = jArray.getJSONObject(i);
            JSONObject json_data = buf.getJSONObject("fields");
            Brete resultRow = new Brete();
            resultRow.contenido = json_data.getString("contenido");
            resultRow.fecha = json_data.getString("fecha");
            resultRow.correo = json_data.getString("correo");
            arrayOfWebData.add(resultRow);
        }
    }
    catch(JSONException e){
            Log.e("log_tag", "Error parsing data "+e.toString());
    }