从 Django 到 Android 的 JSON 数组

Posted

技术标签:

【中文标题】从 Django 到 Android 的 JSON 数组【英文标题】:JSON array from Django to Android 【发布时间】:2012-08-14 10:19:42 【问题描述】:

我在尝试解析从 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_data.getString() 的问题。任何帮助表示赞赏。

【问题讨论】:

【参考方案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());

【讨论】:

以上是关于从 Django 到 Android 的 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

Android 如何 POST 到 Django Rest Framework Json 或 API?

在 django 中解析 json 数组

将 JSON 数组从 Django 视图返回到模板

Django:基于 DRF 令牌的身份验证 VS JSON Web 令牌

将大型 json 字符串从 Javascript 发布到 Django

Django:如何从颤动中读取使用 Dio 发送的图像