2017-02-05 9 views
0

Я хочу заменить значение null в объекте JSON с подсхемой.Заменить нулевой объект Subschema в файле JSON?

Я хочу изменить

"format": null 

в

"format": { 
    "dateFormat": "dayShortMonthYear" 
} 

Используя приведенный ниже код, я получаю следующий результат для "format": (который я не думаю, что это правильно):

"format": "{\"dateFormat\": \"dayShortMonthYear\"}", 

Это мой код. Любая помощь будет значительно оценена.

import json 

data_from_api = """{ 
"response_code": 200, 
    "train_number": "12229", 
    "position": "at Source", 
    "route": [ 
    { 
     "no": 1, 
     "has_arrived": false, 
     "has_departed": false, 
     "schdep": "22:15", 
     "actarr": "00:00", 
     "distance": "0", 
     "day": 0, 
     "format": null 
    }, 
    { 
     "actdep": "23:40", 
     "scharr": "23:38", 
     "schdep": "23:40", 
     "actarr": "23:38", 
     "no": 2, 
     "has_departed": false, 
     "scharr_date": "15 Nov 2015", 
     "has_arrived": false, 
     "station": "HRI", 
     "distance": "101", 
     "actarr_date": "15 Nov 2015", 
     "day": 0, 
     "format": { 
       "dateFormat": "dayShortMonthYear" 
     } 
    } 
    ] 
}""" 

info = json.loads(data_from_api) 
for route in info["route"]: 
    if route["format"] is None: 
     print json.dumps(route, indent=4, sort_keys=True) 
     route["format"] = '{"dateFormat": "dayShortMonthYear"}' 
     print json.dumps(route, indent=4, sort_keys=True) 
+1

Это правильный результат - вы явно вставляете * строку *. Если вы хотите, чтобы это был фактический объект, вы должны сделать «route [" format "] = {'dateFormat': 'dayShortMonthYear'}'. – jonrsharpe

+0

Блестящий. Спасибо за исправление здесь (и сразу). – Genspec

ответ

1

Вы назначаете формат строки, просто удалить кавычки и он должен работать.

route["format"] = {"dateFormat": "dayShortMonthYear"}