Удалите двойные фигурные скобки из JObject, которые были добавлены во время десериализации
У меня есть строка JSON, которая начинается и заканчивается фигурными скобками "{}".
Затем я десериализую объект, но когда это будет сделано, я вижу, что теперь у меня есть двойные фигурные скобки в начале и в конце "{{}}".
Мой код выглядит примерно так:
//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");
Это то, что моя строка JSON выглядит как
"{ \"_id\" : \"582c459d54b6e43d307929f8\", \"LoanName\" :
...
}
Это то, что мой loanVersionedDoc выглядит как
{{
"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"
},
...
}}
Что я должен делать неправильно, чтобы JObject наследовал дополнительную фигурную скобку при десериализации?
Ответы
Ответ 1
Это вызывает проблему или вам просто интересно? У меня была такая же проблема, когда я отправлял данные как тип "объект" внутри другого класса контейнера. Сам контейнер десериализовался должным образом, но внутри объекта не было. Я думал, что это не десериализация этого из-за двойных фигурных скобок. На самом деле, похоже, может быть, как выглядит JObjects. Настоящая причина была, вероятно, в том, что я отключил параметр, в котором он отправил информацию о типе, и поскольку я десериализую "объект", он не мог знать, какой тип только из одной строки.
В любом случае, я заметил, что если вы сделали ".ToString()", то двойные фигурные скобки исчезнут. Это означало, что я смог решить мою проблему, просто сделав:
var someType = JsonConvert.DeserializeObject<SomeType>(jObject.ToString());
Я не уверен, что это ошибка или нет, но я предполагаю, что это просто внутренняя деталь реализации и почему они "фиксируются", когда вы ".ToString()".
Ответ 2
В моем случае я хочу
"object" : {
[
{"a"="b"},
{"a"="b"},
{"a"="b"},
[
{"a"="b"},
{"a"="b"}
]
]
}
To
"object" : {
[
{"a"="b"},
{"a"="b"},
{"a"="b"},
{"a"="b"},
{"a"="b"}
]
}
Так просто я использую foreach вот так
alpha = @"[{'a'='b'},{'a'='b'}]";
JArray arrayObject = JArray.Parse(alpha);
foreach (var item in arrayObject)
{
obj["object"].Last.AddAfterSelf(item);
}