2

嗨,我正在尝试解析从 android 发送的 django 中的 JSON 数组,从 android 发送的 json 响应看起来像

 [{"record":[{"intensity":"Low","body_subpart":"Scalp","symptom":"Agitation"}]}]

现在我在 django 中的功能如下:

record = simplejson.loads(request.POST['record'])
for o in record:            
    new_symptoms=UserSymptoms(health_record=new_healthrecord,body_subpart=o.body_subpart,symptoms=o.symptom,intensity=o.intensity)
    new_symptoms.save()

但它不起作用给我错误为此我也尝试在python shell中执行上述行

>>>rec=json.loads('[{"intensity":"Low","body_subpart":"Scalp","symptom":"Agitation"},{"intensity":"High","body_subpart":"Scalp","symptom":"Bleeding"}]')
>>> for o in rec:
...     print rec.body_subpart
... 
Traceback (most recent call last):
  File "<console>", line 2, in <module>
AttributeError: 'list' object has no attribute 'body_subpart'
4

2 回答 2

0
>>>rec=json.loads('[{"intensity":"Low","body_subpart":"Scalp","symptom":"Agitation"},{"intensity":"High","body_subpart":"Scalp","symptom":"Bleeding"}]')
>>> for o in rec:
...     print rec['body_subpart']

默认情况下 JSON 对象被转换为 Python dict,因此您以这种方式管理访问其值的原因令人惊讶:

record = simplejson.loads(request.POST['record'])
for o in record:            
    body_subpart=o.body_subpart
于 2012-04-08T08:19:03.147 回答
0

您必须使用o['body_subpart']而不是o.body_subpart. 虽然这在 Javascript 中是相同的,但在 Python 中是不同的。

于 2012-04-08T08:31:56.497 回答