2017-09-21 10 views
1

왜 아래 코드는 중괄호를 json 주위에 출력하지 않습니까? 나는 JSON이 항상 괄호 안에 캡슐화되어 있다고 생각했다.내 JSON에 중괄호가 추가되지 않는 이유는 무엇입니까?

var json = JsonConvert.SerializeObject("some text into json", Formatting.Indented);` 

결과 JSON은 단순히 문자열을 연재하기 때문입니다 지금 "\"some text into json\"" 오히려

+0

왜 downvotes? 이것은 기본적인 것이지만 완벽하게 분명한 질문입니다! – Spontifixus

+0

나에게 질문을 개선 할 기회를주는 의견이없는 downvotes는 무엇입니까? 질문은 의도적으로 매우 간단합니다. 부 풀릴 이유가 없습니다. –

+0

그 이유 중 하나가 @Filburt 일 수 있다고 추측하여 코드로 변경합니다. –

답변

5

{ "\"some text into json\"" }보다. 따라서 시리얼 반환 단지 JSON에서, 인용 부호를 단지 문자열이며, 직렬화 된 문자열 :

"some text" 

하면 객체 직렬화 경우 JSON은 중괄호를 추가도 있습니다

{ 
    "someStringProperty": "some text" 
} 

을 Visual Studio의 출력에서 ​​백 슬래시는 전체 문자열을 따옴표로 다시 캡슐화하고 문자열 내에서 따옴표를 이스케이프합니다. 직렬화 된 문자열의 "실제"값은 간단한 따옴표를 사용합니다.

"\"some text\"" 

또는

"{ \"someStringProperty\": \"some text\" }" 
0

JSON 스탠드 "자바 스크립트 객체 표기법"에 대한 모든 데이터가 하나의 자바 스크립트 객체로 표현되는 것을 의미한다 (문자열을 다음과 같이 따라서 Visual Studio에서 위의 JSON 문자열을 표시 할 것 개체의 JavaScript 코드처럼 보이므로 더 정확합니다.

그래서 중괄호가 필수는 아니며 복잡한 개체 구조를 나타내는 데 필요합니다. { "some text into json" } (명확히하기 위해 이스케이프 인용 부호 생략)은 JavaScript 컴파일러에 대한 단순한 구문 오류입니다! { "key": "value", "other key": "other value" } 개체를 가질 수 있지만 값이없는 키는 오류입니다.

따라서 "some text into json"은 문자열 개체 "some text into json"에 대해 올바른 올바른 JSON입니다.