Подтвердить что ты не робот

Удалите двойные фигурные скобки из 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 наследовал дополнительную фигурную скобку при десериализации?

4b9b3361

Ответ 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);
}