2017-03-24 3 views
1

Ich versuche herauszufinden, die beste Methode, eine Sammlung von Objekten zu patchen. Ich versuche, die Sortierreihenfolge einer Anzahl von Objekten zu ändern und dachte, dass jsonpatch der richtige Ansatz sein könnte. Mein Objekt wie folgt aussieht:jsonpatch Pfad zum Aktualisieren von Array-Objekt nach Objekt-ID

[ 
    { 
    "ID": "100", 
    "FirstName": "John", 
    "LastName": "Smith", 
    "Email": "[email protected]", 
    "SortOrder": 1 
    }, 
    { 

    "ID": "125", 
    "FirstName": "John", 
    "LastName": "Doe", 
    "Email": "[email protected]", 
    "SortOrder": 3 
    }, 
    { 

    "ID": "50", 
    "FirstName": "james", 
    "LastName": "johnson", 
    "Email": "[email protected]", 
    "SortOrder": 2 
    }, 
] 

ich einen Endpunkt erstellt, die ein Patch-Anforderung mehrere Objekte in der Sammlung mit jsonpatch Anfrage wie folgt aktualisieren können:

[ 
    { 
    "op": "replace", 
    "path": "/1/SortOrder", 
    "value": 2 
    }, 
    { 
    "op": "replace", 
    "path": "/0/SortOrder", 
    "value": 1 
    }, 
    { 
    "op": "replace", 
    "path": "/2/SortOrder", 
    "value": 3 
    } 
] 

Was ich tun möchte, der Lage sein Verwenden Sie die ID-Eigenschaft im jsonpatch-Pfad. Ist das mit meiner aktuellen Objektstruktur möglich? Es wäre in etwa so aussehen:

[ 
    { 
    "op": "replace", 
    "path": "/125/SortOrder", 
    "value": 2 
    }, 
    { 
    "op": "replace", 
    "path": "/100/SortOrder", 
    "value": 1 
    }, 
    { 
    "op": "replace", 
    "path": "/50/SortOrder", 
    "value": 3 
    } 
] 

Was würde ich in der Lage zu tun habe, um eine Patch-Anforderung wie diese zu machen?

+0

Ich denke, der einzige Weg, um zu tun, was ich frage, ist ein Wörterbuch anstelle eines Arrays zu verwenden. Das Problem, auf das ich jetzt stoße, ist, dass mein Schlüsselwert eine GUID ist und es scheint, dass die JSONPatch-Implementierung in .NET kein Fan von GUID-Schlüsseln ist. – JoAMoS

Antwort

2

Basierend auf der Json pointer RFC, gibt es keine Möglichkeit, ein Element aus einem Array durch eine Eigenschaft auszuwählen. Da JSON Patch JSON Pointer verwendet, haben Sie kein Glück.

Es ist schade, dass die JSON-Patch-Leute JSON Path oder etwas Ähnliches für die Auswahlsprache nicht ausgewählt haben.

Verwandte Themen