2
나는 문제가 다음과 같은 데이터 구조에 대한 예상대로 기본 모델 바인더가 작동하도록 점점 보내고 있습니다
JSON :
{
template: "path/to/template",
slides: [{
index: 0,
context: {
foo: "bar"
}
}, {
index: 1,
context: {
foo: 'bar!',
table: [
['Price', 'Revenue', 'Profit'],
[$5', 100, 20],
['$10', 320, 4],
['$7', 50, 2]
]
}
}]
}
IPresentationData
모델 :
public interface IPresentationData
{
public string Template { get; set; }
public ICollection<SlideData> Slides { get; set; }
}
을 ISlideData
모델 :
public interface ISlideData
{
public int Index { get; set; }
public IContext Context { get; set; }
}
IContext
모델 :
public interface IContext : IDictionary<string, dynamic>
{
}
기본 모델 바인더가 임의의 큰/깊은 객체가 될 수 SlideData.Context
를 제외하고, 함께 잘 작동합니다. 난 그냥 SlideData.Context
속성에 대한 System.Web.Mvc.DefaultModelBinder#BindModel
를 오버라이드 (override) 할 필요가 생각하고
{
'table': [
[...]
]
}
,하지만 난 정말 아니에요 대신의
{
'table[0][0]': 'Price',
'table[0][1]': 'Revenue',
...
}
: 예를 들어
는json.context.table
는로 역 직렬화 어디에서 시작해야하는지.
여기에 도움을 주시면 감사하겠습니다.
[이 사이트] (http://json2csharp.com/)를 보았습니까? –
꽤 멋지지만 컨텍스트 속성은 완전히 동적입니다. –
그러면 Json.Net에서'dynamic'을 사용할 수 있습니다. 그냥 SO를 검색하십시오. –