首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JSON解码Django Python中的列表

JSON解码Django Python中的列表
EN

Stack Overflow用户
提问于 2014-08-13 17:42:44
回答 2查看 1K关注 0票数 1

我有一个列表(例如[1,2,3,4])从Django视图传递到javascript变量并与jQuery一起提交。我需要解析这个变量来提取索引。基本程序是:

添加为上下文变量(python):

代码语言:javascript
代码运行次数:0
运行
复制
resultMsgList.append(msg)
resultMsgListJson=json.dumps(resultMsgList)
resultDict['resultMsgListJson']= resultMsgListJson

Javascript:

代码语言:javascript
代码运行次数:0
运行
复制
var resultMsgList = {{resultMsgListJson}};

    var data = {'resultMsgList':resultMsgList};
    $.post(URL, data, function(result){
    });

Google控制台给了我:

Javascript:

代码语言:javascript
代码运行次数:0
运行
复制
        var resultMsgList = [["View \"S03_2005_LUZ_140814_105049_with_geom\" was successfully created!", "luz_mapfile_scen_tdm_140814_105049", "S03_2005_LUZ_140814_105049_with_geom", "C:/djangoProjects/web_output/mapfiles/ATLANTA/luz_mapfile_scen_tdm_140814_105049.map", [25, 50, 498.26708421479, 131137.057816715]]];

我将这个结果复制到一个验证器中,它声明它是正确的JSON。

这篇文章给了我:

代码语言:javascript
代码运行次数:0
运行
复制
resultMsgList[0][]:View "S03_2005_LUZ_140814_105049_with_geom" was successfully created!
resultMsgList[0][]:luz_mapfile_scen_tdm_140814_105049
resultMsgList[0][]:S03_2005_LUZ_140814_105049_with_geom
resultMsgList[0][]:C:/djangoProjects/web_output/mapfiles/ATLANTA/luz_mapfile_scen_tdm_140814_105049.map
resultMsgList[0][4][]:25
resultMsgList[0][4][]:50
resultMsgList[0][4][]:498.26708421479
resultMsgList[0][4][]:131137.057816715

我需要从这个列表中得到元素。我现在有(python):

代码语言:javascript
代码运行次数:0
运行
复制
resultMsgListContext = request.POST.get('resultMsgListJson','')
resultMsgListContext = json.loads(resultMsgListContext)
oldMapfileName=resultMsgListContext[0][2] (+ a number of similar statements)

根据这个帖子,我需要用json.loads()在python中解码变量,但是它说没有要解码的JSON对象。基于Python中的示例,我不知道为什么不工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-13 23:56:35

我认为问题在于,它将整个resultMsgList看作一个字符串,结果中存在u‘xxxxx’这一事实证实了这一点。这就是为什么索引超出了范围,因为当二维数组仍然是字符串时,您试图访问它。您必须使用json.loads将其转换为字符串数组。

票数 0
EN

Stack Overflow用户

发布于 2014-08-14 17:38:56

在javascript中,尝试传递

代码语言:javascript
代码运行次数:0
运行
复制
var data = {'resultMsgListJson':resultMsgList};

而不是

代码语言:javascript
代码运行次数:0
运行
复制
var data = {'resultMsgListJson': resultMsgListJson};

resultMsgListJson不是在那时定义的javascript变量,它可能会被计算为undefined

通常,在python中,在尝试对resultMsgListContext执行json.loads之前,要打印它的内容,这样您就可以准确地看到要解析的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25292776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档