2012-02-15 2 views
2

JavaScriptSerializer를 사용하여 Json Object에서 serialize하는 KeyPairValue 목록이 있습니다. 이 작업의 출력은 다음과 같이 나에게 뭔가를 줄 : 사용자 지정 Json serialization

[{ Key:"A", Value:"ValueA"},{ Key:"D", Value:"ValueD"}] 

거기인가 :

[{"Key":"A","Value":"ValueA"},{"Key":"D","Value":"ValueD"}] 

I'ld 그것은 다음과 같이 할 수 있도록 속성 이름 주위에 ""그 없애 좋아 방법이 아니면 내가 뭘 찾고있는 경우 그냥 Json 직렬화되지 않습니다?

+0

나는 읽기 쉽고 쓰기가 더 쉽기 때문에 XML보다 JSON을 좋아합니다. 그러나 열쇠에 대한 ** ""**는 너무 고통 스럽습니다. – brgerner

+0

즉 json을 원하지 않으십니까? – CodesInChaos

답변

2

당신은 Json.Net

StringWriter str = new StringWriter(); 
JsonTextWriter writer = new JsonTextWriter(str); 
writer.QuoteName = false; //<-- This is the trick 
JsonSerializer jsonSer = new JsonSerializer(); 
jsonSer.Serialize(writer, new { ID = 1, Name = "Jack" }); 

string jsonstr = str.ToString(); 

출력으로 달성 할 수는 {ID:1,Name:"Jack"}

+0

정확히 내가 뭘 많이 고맙다고! –

+0

기록 : 생성 된 출력은 포스터에서 요구 한 것이지만 유효하지 않은 Json입니다 (다른 답변에서도 언급 됨). 많은 Json 소비자는이 문자열을 받아들이지 않거나 처리하지 않습니다. 더 이상 그렇지 않으므로 실제로 Json으로 언급하지 말아야합니다. – Eddy

+0

@Eddy, OK. 나는 지금부터 이름을 짓는다. * Myon * (My Object Notation) –

1

아시다시피 JSON에서 키를 ""에 포함시켜야합니다. JSON은 실제로 JavaScript 객체의 전송 형식이므로 일부 세부 사항이 있기 때문입니다.

0

은 RFC는 이름이 문자열임을 지정이며, 또한 문자열을 따옴표로 포장되어야 함을 지정합니다.

RFC 4627

그것은 값이 될 수와 유형 중 일부는 따옴표로 감싸하지 않아도 다른 유형을 주목할 가치가있다. 당신은 spec에서 이것을 찾을 수 있습니다.

관련 문제