2016-09-06 2 views
2

Я пытаюсь добавить новый узел в существующий JSONJObject, но когда я его добавлю, он не форматируется правильно. Он добавляет кавычки по всему узлу и \ вводится на место.JSON добавить узел в существующий JObject

фон: Я загрузка JSON файла, делая некоторую логику, то добавление узла обратно в Фигурном я могу сделать это так:.

mainJson.Add("NewNode", JsonConvert.SerializeObject(MyObject)); 
File.WriteAllText("myfile.json", mainJson.ToString()); 

Проблема заключается в том, что это результат:

{ 
"JSONFile": [ 
    { 
    "More": "Nodes", 
    "InThe": "File" 
    } 
], 
"Customers": "{\"FirstName\":\"Mike\",\"LastName\":\"Smith\"},{\"FirstName\":\"Jane\",\"LastName\":\"Doe\"}", 
} 

Я знаю, что мой JsonConvert.SerializeObject (MyObject) работает, если я делаю это:

string json = JsonConvert.SerializeObject(MyObject); 
File.WriteAllText("myfile2.json" json); 

Результат таков:

[ 
    { 
    "FirstName": "Mike", 
    "LastName": "Smith" 
    }, 
    { 
    "FirstName": "Jane", 
    "LastName": "Doe" 
    } 
] 

Что мне не хватает?

Редактировать: Следующее @Swagata Prateek комментарий;

mainJson.Add("Customers",JObject.FromObject(MyObject)); 

Необработанное исключение типа 'System.ArgumentException' произошло в Newtonsoft.Json.dll

Дополнительная информация: объект сериализуется в массив. Ожидается экземпляр JObject.

Я хотел бы отметить, что MyObject актуально ObservableCollection, если это делает разницу

+1

При вызове 'JsonConvert.SerializeObject (MyObject)', 'MyObject' здесь сериализации в виде строки, таким образом,' NewNode' здесь представляет себя в виде строки цитируемого , :) –

ответ

3

Не могли бы вы любезно попробовать с этим?

mainJson.Add("NewNode", JObject.FromObject(MyObject)); 
File.WriteAllText("myfile.json", mainJson.ToString()); 

Когда вы делаете JsonConvert.SerializeObject(MyObject) он упорядочивает MyObject и в процессе вы получите строку из него.

При назначении mainJson.Add("NewNode", JsonConvert.SerializeObject(MyObject)); вы назначаете строку NewNode. Таким образом, вы получите строку в кавычках, которая представляет сериализованного MyObject

Update:

JArray.FromObject является методом, который вы хотели бы искать, если вы хотите, чтобы преобразовать вашу коллекцию в JArray. В этом случае сегмент будет выглядеть как

mainJson.Add("NewNode", JArray.FromObject(obsColl)); 
File.WriteAllText("myfile.json", mainJson.ToString()); 
+0

Человек выбирает, подчиняется подчиненный! в любом случае, пожалуйста, просмотрите приведенное выше изменение. Это возвращает ошибку. – Xaphann

+1

Ooops. Извини чувак. Не знал, что это была коллекция. Оставайтесь на линии. Не уверен, что я могу правильно набирать сегмент кода через телефон –

Смежные вопросы