2013-08-21 3 views
2

ServiceStack을 사용하여 JSON 요청을 직렬화/비 직렬화합니다. 내가 뭘 찾고있는 복잡한 개체 JSON (중첩 된 개체) 걸리고 중첩 된 개체 사전 (사전)로 변환 할 수 있습니다. 예를 들어ServiceStack을 사용하여 중첩 된 JSON 객체를 비 직렬화

, 내가 가진 경우 같은 JSON 개체 : 나는 사전을 원하는

{ a: "myA", 
    b: { "myB", true} 
} 

은을 반영. 그래서 각 키/값 : 나는 점점 결국 무엇

var dict = JsonSerializer.DeserializeFromString<Dictionary<string, object>>(request); 

var dict = JsonObject.Parse(request); 

을 시도했습니다

key: a value: myA 
key: b value: Dictionary<string, object> 
    key: myB value: true 

입니다 : 내가

key: a value: myA 
key: b value: "myB:true" 

주의가 필요합니다 이 무한 중첩 Json 개체 (즉, 내가 가질 수있는 3, 4, 5 단계까지).

답변

3

사용자 지정 세션 상태 모듈에 대해이 작업을 시도했는데 JSON에 형식 데이터가 필요한 개체를 serialize 할 때 고려해야 할 많은 경우가 있습니다. 기본적으로 형식에 대한 개념이 없습니다. 그것을 할 수있는 쉬운 방법 중 하나는 방법을 초기화하여 AppHost에서 JSConfig.includeTypeInfo = true;

를 사용하여 JSON에 입력 한 정보를 직렬화 ServiceStack을 강제하는 것입니다. 이렇게하면 ServiceStack이 문자열, int 및 기본 유형을 포함하여 JSON에 직렬화하는 모든 단일 객체에 "__type"속성을 포함하게됩니다. 이것은 많은 오버 헤드를 나타냅니다. 특히 모든 단일 직렬화에 대한 유형 정보가 필요하지 않은 대규모 프로젝트에있는 경우에 그러합니다.

또는 하나의 중첩 된 개체 Dictionary에 대해 원하는 경우 사용자 고유의 형식 시스템을 구현해야합니다. 나는 이것을 끝내었고, 올바르게되기까지는 시간이 걸렸다.

마지막으로 인터페이스로 직렬화하면 형식 정보가 포함될 것이라고 Mythz (ServiceStack의 수석)가 올린이 게시물이 있습니다. 나는 이것을 독립적으로 검증 했으므로, 중첩 된 사전에 들어가는 것을 제어 할 수 있고 모든 것을 하나의 인터페이스로 제한 할 수 있다면 그것을 작동시킬 수 있습니다.

type info in ServiceStack JSON

관련 문제