So habe ich eine JSON-Datei, die, wenn Ba1 und alle anderen so etwas wie diesesLesen JSON-Datei und einige Werte zu modifizieren in Python in der exakt gleichen Position sein
{
"Version": "2.0",
"Description": "A description...",
"A": {
[...]
},
"B": {
"B.a": {
"B.a.a": {
"Value1": "It's value",
"Value2": "This value"
},
"B.a.1": {
"Value1": "Value x.a.1",
"Value2": "Value y.a.1"
},
"B.a.2": {
"Value1": "Value x.a.2",
"Value2": "Value y.a.2"
},
"B.a.3": {
"Value1": "Value x.a.3",
"Value2": "Value y.a.3"
},
"B.a.4": {
"Value1": "Value x.a.4",
"Value2": "Value y.a.4"
}
}
},
"C": {
[...]
}, ...
nun für den Rest meines Codeprüfung sieht sind die Werte, die sie haben sollten, und wenn nicht, wird es sie ändern.
with open(file, 'r+') as test:
data = json.load(test)
for version in allAVersions:
data["B"]["B.a"][version['VersionNumber']]['Value1'] = newVersion['Value1'][version['VersionNumer']]['NewValue1']
with open(file, 'w') as test:
test.write(json.dumps(data, indent=4, sort_keys=True))
Das funktioniert vollkommen in Ordnung! Aber das Problem ist, dass es "B" und alle Knoten darin am Anfang der Datei platziert. Wie kann ich die Datei so ändern, dass sie genau dort bleibt, wo sie bereits war? Das heißt, wenn B.a.1 - Wert 1 einen neuen Wert erhält, wird nur dieser Wert geändert und das Format ändert sich nicht.
Danke für die Hilfe :)
Ich verstehe das Problem nicht. JSON ist eine Datenrepräsentation und die Reihenfolge der Elemente ist irrelevant. Zumal Sie ein Wörterbuch angeben (so wird es von Python interpretiert) und das ist ungeordnet. Was erwarten Sie bei einer ordnungsgemäßen Bestellung? Wenn es wichtig ist, sollten Sie Ihr Datenmodell überdenken. – avanwieringen
Mögliche Duplikat [Kann ich JSON bekommen in eine OrderedDict in Python laden?] (Http://stackoverflow.com/questions/6921699/can-i-get-json-to-load-into-an-ordereddict-in -python) –
Es ist kein Duplikat, weil ich nicht suche, es alphabetisch zu sortieren – Harbus