2012-12-30 3 views
1

JavaScriptSerializer를 사용하여 ChatLogPath와 같이 식별되는 문자열뿐만 아니라 객체 목록을 모두 포함하는 JSON 데이터 패키지를 보내고 싶습니다. 내가 말할 수있는 한, 그 클래스는 하나의 객체 만 직렬화 할 수있다. (리스트가된다.) 여러개의 객체를 추가하려고하면 분명히 {...} {...}와 같은 무효 한 JSON이 생성된다. 작업.JavaScriptSerializer : 목록 + 문자열을 JSON으로 serialize

이렇게 할 방법이 있습니까? 나는 C#과 ASP.NET MVC에 대해 매우 신감이 많다. 그래서 이것이 바보 같은 질문이라면 나를 용서해라. :)

편집 : 여기에 내 코드가있다.

string chatLogPath = "path_to_a_text_file.txt"; 
    IEnumerable<ChatMessage> q = ... 
    ... 
    JavaScriptSerializer json = new JavaScriptSerializer(); 
    return json.Serialize(q) + json.Serialize(chatLogPath); 

JSON {...}에 chatLogPath {...}가 뒤에 오는 배열을 출력합니다. 즉, 유효하지 않은 JSON이므로 작동하지 않습니다.

답변

5

배열과 경로가있는 단일 JSON 객체를 함께 얻는 가장 쉬운 방법은 각각의 속성 또는 필드로 클래스 또는 동적 객체를 만드는 것입니다.

클래스 예 :

public class ChatInformation { 
    public IEnumerable<ChatMessage> messages; 
    public string chatLogPath; 
} 
... 
var output = new ChatInformation { 
    messages = ..., 
    chatLogPath = "path_to_a_text_file.txt" 
}; 
return json.Serialize(output); 

동적 예 (.NET을 필요로 4+) :

dynamic output = new ExpandoObject { 
    messages = ..., 
    chatLogPath = "path_to_a_text_file.txt" 
}; 
return json.Serialize(output); 

익명 형식의 예 (다른 클래스를 가지고 걱정하지 않는다,도 아니다 당신은에있는 경우 .NET 4) :

+0

나는 그 생각을하지 못했다고 믿을 수는 없지만, 그것은 절대적으로 의미가 있습니다. 엄청 고마워! – connergdavis

+1

괜찮습니다. 세 번째 옵션으로 답변을 업데이트했습니다. ;-) – ventaur

관련 문제