2016-09-06 4 views
2

기존 노드 JSONJObject에 새 노드를 추가하려고하지만 추가 할 때 올바르게 포맷되지 않습니다. 전체 노드 주위에 따옴표를 추가하고 \를 배치합니다.JSON 기존 JObject에 노드 추가

배경 : 나는 다시 노드를 추가 한 후 일부 로직을 수행하는 JSON 파일을로드하고이 같은 그것을 할 수 나타냈다 :.

:

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

문제는이 결과라는 것이다

string json = JsonConvert.SerializeObject(MyObject); 
File.WriteAllText("myfile2.json" json); 
:
{ 
"JSONFile": [ 
    { 
    "More": "Nodes", 
    "InThe": "File" 
    } 
], 
"Customers": "{\"FirstName\":\"Mike\",\"LastName\":\"Smith\"},{\"FirstName\":\"Jane\",\"LastName\":\"Doe\"}", 
} 

은 내가 이렇게하면 내 JsonConvert.SerializeObject (MyObject를가) 작동하는지 알고

결과는 다음과 같습니다.

[ 
    { 
    "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

과 같을 것 . :) –

답변

3

를 취하면?

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

당신이 MyObject를 직렬화 과정에서 당신은 그것의 문자열을 얻을 JsonConvert.SerializeObject(MyObject)을 다하고 있습니다.

mainJson.Add("NewNode", JsonConvert.SerializeObject(MyObject));을 할당하면 NewNode에 문자열이 할당됩니다.

JArray.FromObject는 당신이는 jarray에 컬렉션을 변환 할 경우에 대한보고 싶어하는 방법입니다 : 따라서 당신은 직렬화 MyObject

업데이트를 나타내는 인용 문자열을 얻을. 당신은`JsonConvert.SerializeObject (을 MyObject)를 호출 할 때이 경우 세그먼트 따라서`NewNode` 여기에 인용 된 문자열로 자신을 제시하고,`문자열로 직렬화 여기 MyObject``

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

남자가 선택, 노예가 복종! 어쨌든 위의 편집을보십시오. 이것은 오류를 반환합니다. – Xaphann

+1

Ooops. 미안해. Didnt는 그것이 수집이었다라는 것을 알고있다. 기다려. 내가 전화를 통해 코드 세그먼트를 올바르게 입력 할 수 있는지 확신하지 못한다. –

관련 문제