«Ожидается имя свойства в двойных кавычках» в файле json - PullRequest
0 голосов
/ 21 ноября 2018

Вот файл json

{"pre_trigger": 4, "sampling frequency": 1652, "record length": 15.0, 
"sensors": 
[{"model": "393B05", "serial": "46978", "sensitivity": 10030, "sensitivity_units": "mV/g", "sensor_type": "Accelerometer", "units": "g", "location": [7.01, -0.19, 0], "location_units": "m", "direction": [0, 0, 1], "trigger": true, "trigger_value": 0.005, "max_val": 0.45, "min_val": -0.45, "comments": "Inside B122 next to bookshelf", "channel": "cDAQ1Mod2/ai0"}],

[{"model": "393B05", "serial": "47085", "sensitivity": 9980, "sensitivity_units": "mV/g", "sensor_type": "Accelerometer", "units": "g", "location": [9.65, -0.19, 0], "location_units": "m", "direction": [0, 0, 1], "trigger": true, "trigger_value": 0.005, "max_val": 0.45, "min_val": -0.45, "comments": "Inside B122 under the whiteboard", "channel": "cDAQ1Mod2/ai1"}] 

"parameters": {"general": [], "specific": ["Walking direction", "Person ID"]}}

Я не из тех, кто разбирается в кодировании, поэтому я не знаю, откуда на самом деле происходит эта ошибка.Я запускаю команду следующих команд

daq = DAQ()
daq.load_setup('json.fname')

, которая возвращает ошибку свойства.В файле json нет одинарных кавычек, поэтому я действительно не знаю, в чем проблема.Ниже приведена ссылка на ошибку.

 def load_setup(self,fname='setup.json'):
    """
    Opens the JSON file containing the setup parameters for the experiment.

    Parameters
    ----------
    fname : str
        File that the parameters for the experiment were saved into (JSON file)

    """
    import json

    with open(fname, 'r') as setup_file:
        setup_data = json.load(setup_file)

    self.fs = setup_data['sampling frequency']
    self.record_length = setup_data['record length']
    self.sensors = setup_data['sensors']
    self.parameters = setup_data['parameters']
    self.pre_trigger = setup_data['pre_trigger']

1 Ответ

0 голосов
/ 21 ноября 2018

У вас просто нет действительного JSON (в вашем коде Python нет ничего плохого).Вы не используете функциональность массива правильно.Массив JSON выглядит следующим образом:

{"some_array": ["first item", "second item", ..., "last item"]}

it не выглядит следующим образом (это то, что вы имели, и почему вы получаете сообщение об ошибке):

{"some_array": ["first item"], ["second item"], ..., ["last item"]}

Короче говоря, элементы вашего списка разделены запятой внутри квадратных скобок.Вот как должен выглядеть ваш JSON (массив sensor исправлен и довольно напечатан):

{
    "pre_trigger": 4,
    "sampling frequency": 1652,
    "record length": 15.0,
    "sensors":
    [
        {
            "model": "393B05",
            "serial": "46978",
            "sensitivity": 10030,
            "sensitivity_units": "mV/g",
            "sensor_type": "Accelerometer",
            "units": "g",
            "location": [7.01, -0.19, 0],
            "location_units": "m",
            "direction": [0, 0, 1],
            "trigger": true,
            "trigger_value": 0.005,
            "max_val": 0.45,
            "min_val": -0.45,
            "comments": "Inside B122 next to bookshelf",
            "channel": "cDAQ1Mod2/ai0"
        },
        {
            "model": "393B05",
            "serial": "47085",
            "sensitivity": 9980,
            "sensitivity_units": "mV/g",
            "sensor_type": "Accelerometer",
            "units": "g",
            "location": [9.65, -0.19, 0],
            "location_units": "m",
            "direction": [0, 0, 1],
            "trigger": true,
            "trigger_value": 0.005,
            "max_val": 0.45,
            "min_val": -0.45,
            "comments": "Inside B122 under the whiteboard",
            "channel": "cDAQ1Mod2/ai1"
        }
    ],

    "parameters": {
        "general": [],
        "specific":
        [
            "Walking direction",
            "Person ID"
        ]
    }
}

Я рекомендую всегда сохранять ваш JSON хорошо напечатанным (даже на диске), так как это облегчаетчтения / понимания.Частью привлекательности формата JSON является то, что вы можете легко увидеть его как человека.

Остальная часть вашего кода, который вы опубликовали, работала нормально после этого исправления.

HTH.

...