2015-06-03 2 views
-3

Я хочу использовать Python для обновления данных JSON.JSON Сохранение дубликатов информации

import json 
with open('./gui-config.json','r+') as f: 
    js=json.load(f) 
    js['configs'][0]['password']='123' 
    f.seek(0) 
    json.dump(js,f) 

Это мой тест JSON с именем "гуй-config.json":

{ 
"configs" : [ 
    { 
"server" : "US.SSSERVER.PW", 
"server_port" : 8989, 
"password" : "73221446", 
"method" : "aes-256-cfb", 
"remarks" : ""} 

], 
"index" : 0, 
"global" : false, 
"enabled" : true, 
"shareOverLan" : false, 
"isDefault" : false, 
"localPort" : 1080} 

Конец перспективе, "гуй-config.json" является:

{ 
    "localPort": 1080, 
    "isDefault": false, 
    "configs": [ 
    { 
     "server_port": 8989, 
     "method": "aes-256-cfb", 
     "remarks": "", 
     "password": "123", 
     "server": "US.SSSERVER.PW" 
    } 
    ], 
    "global": false, 
    "enabled": true, 
    "index": 0, 
    "shareOverLan": false 
} 
    sDefault": false, 
    "localPort" : 1080 
} 

"sDefault" : false, "localPort" : 1080} это повторная информация. Почему это произошло? Могу ли я закончить эту операцию за один раз?

+2

Почему бы не закрыть файл и открыть его снова, чтобы написать? Ищет 0 и демпинг, я не думаю, что «весь» файл перезаписан. Он начнет писать только с этой позиции, но как только содержимое в переменной js закончится, остальная часть файла останется такой, какая есть. – rajatkhanduja

+0

«Python сохраняет данные JSON неправильно». Ваша отладка станет намного лучше, когда вы начнете искать нормальные проблемы, а не сразу обвиняете язык и платформу, которую используете. Вы честно думаете, что стабильная версия Python полностью нарушит поддержку JSON, и никто из нас не заметил бы, и разработчики не исправили бы это? –

ответ

2
import json 
with open('./gui-config.json','r') as f: 
    js=json.load(f) 
    js['configs'][0]['password']='123' 

with open('./gui-config.json','w') as f: 
    js.dumps(js, f) 

Я думаю, что это более аккуратный и более простой подход. Открытие файла снова для его записи очищает существующий контент (который вам не нужно беспокоиться, поскольку у вас уже есть его копия в памяти).

+2

Вам не нужно открывать файл как «r +» в первый раз. Это может быть обычный режим чтения. – SuperBiasedMan

+1

Сделано изменение. Спасибо :) – rajatkhanduja

Смежные вопросы