Entfernen von doppelten geschweiften Klammern aus JObject, die Hinzugefügt wurden, während der Deserialisierung
Habe ich eine JSON-Zeichenfolge, die beginnt und endet mit geschweiften Klammern "{}".
Ich dann Deserialisieren des Objekts, sondern, wenn dies geschehen ist, sehe ich, dass ich jetzt doppelten geschweiften Klammern am Anfang und am Ende "{{}}".
Mein code sieht ungefähr so aus
//deserializeobject json string into jobject
JObject loanVersionedDoc = JsonConvert.DeserializeObject<JObject>(s);
//Get the latest value from versioned document
JObject loanLatestVersion = Versioning.demultiplicifyingParseForLatest(loanVersionedDoc);
//TODO get the latest activity.isComplete value
string activityCompletionStatus = (string)loanVersionedDoc.GetValue("Activities[0].isComplete");
Dies ist, was mein JSON-string sieht wie
"{ \"_id\" : \"582c459d54b6e43d307929f8\", \"LoanName\" :
...
}
Dies ist, was mein loanVersionedDoc sieht aus wie
{{
"LoanName": "Test One",
"isActive": "True",
"Stages": [
{
"StageName": "Stage One",
"isComplete": false
},
{
"StageName": "Stage Two - CAG Approval and Indicative Terms",
"isComplete": true
},
{
"StageName": "Stage Three",
"isComplete": false
}
],
"Activities": [
{
"ActivityName": "Generate due diligence report",
"isComplete": "Complete",
"ActivityParent": "Stage Two - CAG Approval and Indicative Terms"
},
{
"ActivityName": "Received Stage 2 document from BDM",
"isComplete": "NA",
"ActivityParent": "Stage Two - CAG Approval and Indicative Terms"
},
...
}}
Was muss ich tun, falsch zu verursachen, die JObject Erben einer zusätzlichen geschweiften Klammer, wenn deserialisiert?
- gleiche Problem hier.{{ "name": "john", "Nachname": "doe", "complexObj": { "id": 1, "name": "test" } }}. Ich muss entfernen Sie die doppelten Klammern und verwenden Sie es als eine Jobject itsef. So kann nicht konvertieren zu einem string. Jede Lösung ???
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dies ein problem verursacht oder sind Sie einfach nur neugierig? Ich hatte das gleiche Problem, wenn ich war das versenden von Daten vom Typ "Objekt" innerhalb eines anderen container-Klasse. Der container selbst wurde korrekt deserialisiert aber das Objekt von innen nicht. Ich dachte, es war nicht zu Deserialisieren es wegen der doppelten geschweiften Klammern. In Wirklichkeit scheint es, dass nur sein kann, wie JObjects Aussehen. Der wahre Grund war wahrscheinlich, weil ich ausgeschaltet hatte die Einstellung, wo es geschickt, die Informationen geben und da war ich Deserialisieren, um "Objekt" gibt es doch gar nicht wissen, was der Typ aus einem string allein.
Entweder ist mir übrigens aufgefallen, wenn Sie getan haben ".ToString()" auf, dann die doppelten geschweiften Klammern verschwinden würden. Dies bedeutete, dass ich in der Lage war zu lösen mein Problem einfach:
Ich bin mir nicht sicher, ob das ein bug ist oder nicht, aber meine Vermutung ist, dass es sich lediglich um eine interne Implementierung detail und deshalb haben Sie es "fest", wenn Sie ".ToString()".
In meinem Fall möchte ich
So Einfach habe ich mit foreach wie diese
"object" : { [ {"a"="b"}, {"a"="b"}, {"a"="b"} ] }