解析JSON文件并将其添加到模型中

时间:2016-02-11 16:23:28

标签: python json django

我正在使用Django(在这里编写一个脚本)。我正在尝试解析JSON文件并将其添加到我创建的模型中。但是,我得到了这个奇怪的错误,我无法弄清楚!

import os
os.environ["DJANGO_SETTINGS_MODULE"] =  "json_api.settings"
import json
from api.models import User_details

with open('./static/test.json') as data_file:
    data = json.load(data_file)

r = User_details.objects.create(uid=int(data["User"]["id"]) ,
                                premium=bool(data["User"]["premium"]) ,
                                last_filled=data["LastFilled"] ,
                                trip_mode=data["Trip_Mode"] , 
                                odometer=int(data["Params"]["Odometer"]), 
                                fuel=int(data["Params"]["Fuel"]), 
                                tirep_fl=int(data["Params"]["Fuel"]["frontLeft"]),
                                tirep_fr=int(data["Params"]["TireP"]["frontRight"]),
                                tirep_bl=int(data["Params"]["TireP"]["backLeft"]),
                                tirep_br=int(data["Params"]["TireP"]["backRight"]))
r.save()

JSON文件:

{
    "User": {
        "id": "123456678923",
        "premium": "False"
    },
    "LastFilled": "16/02/02-00:45:32",
    "Trip_Mode": "Disabled",
    "Params": {
        "Odometer": "12345",
        "Fuel": "0.78",
        "TireP": {
            "frontLeft": "32",
            "frontRight": "29",
            "backLeft": "24",
            "backRight": "26"
        }
    }
}

错误:

(env) saru95   $   python import_data.py
  File "import_data.py", line 19
    r.save()
    ^
SyntaxError: invalid syntax

编辑:

添加缺失的括号并运行python import_data.py后,我收到以下错误:

(env) saru95   $   python import_data.py
Traceback (most recent call last):
  File "import_data.py", line 4, in <module>
    from api.models import User_details
  File "/Users/sarthakmunshi/Desktop/django-cookbook/json_api/api/models.py", line 3, in <module>
    class User_details(models.Model):
  File "/Users/sarthakmunshi/Desktop/django-cookbook/env/lib/python2.7/site-packages/django/db/models/base.py", line 94, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/Users/sarthakmunshi/Desktop/django-cookbook/env/lib/python2.7/site-packages/django/apps/registry.py", line 239, in get_containing_app_config
    self.check_apps_ready()
  File "/Users/sarthakmunshi/Desktop/django-cookbook/env/lib/python2.7/site-packages/django/apps/registry.py", line 124, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

3 个答案:

答案 0 :(得分:1)

您错过了来自int的{​​{1}}来电以及所有四个fuel值的近距离内容。

答案 1 :(得分:0)

你忘记了很多结束括号:

fuel=int(data["Params"]["Fuel"]), 
tirep_fl=int(data["Params"]["Fuel"]["frontLeft"]),
tirep_fr=int(data["Params"]["TireP"]["frontRight"]),
tirep_bl=int(data["Params"]["TireP"]["backLeft"]),
tirep_br=int(data["Params"]["TireP"]["backRight"])

答案 2 :(得分:0)

我通过替换

解决了这个问题
import os
os.environ["DJANGO_SETTINGS_MODULE"] =  "json_api.settings"

通过

from json_api.wsgi import *

其中json_api是我的项目名称。谢谢你的帮助!