ServiceStack.Text로 트위터 RateLimit Json을 비 직렬화하려고 시도 중입니다. 나는 JSON이 풀려나는 적절한 DTO 객체 (게시물 하단을 보라)를 만들었다. System.Runtime.Serialization을 사용하여 더 친숙한 이름으로 필드의 이름을 바꿨습니다 (나는 이것을 Twitter의 다른 DTO 개체에서 많이 사용했습니다). 객체의 직렬화를 해제하면 RateLimitContext가 제대로 deserialize되지만 Resources 아래의 모든 항목은 null로 직렬화됩니다. 나는이 특별한 객체에 대해 DataMemberNames에 뭔가 문제가 있다고 의심한다. 왜냐하면 그것들은 몇개의 "특별한"문자들을 포함하고 있기 때문이다. 이것은 ServiceStack.Text의 버그입니까, 아니면 DTO에 누락 된 것이 있습니까?ServiceStack.Text 및 Twitter JSON
{
"rate_limit_context": {
"access_token": "ajksldjalsda-akjflkasjfltpowfaalksjdfAPQPIJFaflkjaq"
},
"resources": {
"lists": {
"/lists/subscribers": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
},
"/lists/list": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/lists/memberships": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/lists/ownerships": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/lists/subscriptions": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/lists/members": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
},
"/lists/subscribers/show": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/lists/statuses": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
},
"/lists/members/show": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/lists/show": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"application": {
"/application/rate_limit_status": {
"limit": 180,
"remaining": 178,
"reset": 1380314022
}
},
"friendships": {
"/friendships/incoming": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/friendships/lookup": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/friendships/outgoing": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/friendships/no_retweets/ids": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/friendships/show": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
}
},
"blocks": {
"/blocks/ids": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/blocks/list": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"geo": {
"/geo/similar_places": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/geo/search": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/geo/reverse_geocode": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/geo/id/:place_id": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"users": {
"https://stackoverflow.com/users/profile_banner": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
},
"https://stackoverflow.com/users/suggestions/:slug/members": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"https://stackoverflow.com/users/show/:id": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
},
"https://stackoverflow.com/users/suggestions": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"https://stackoverflow.com/users/lookup": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
},
"https://stackoverflow.com/users/search": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
},
"https://stackoverflow.com/users/contributors": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"https://stackoverflow.com/users/contributees": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"https://stackoverflow.com/users/suggestions/:slug": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"prompts": {
"/prompts/record_event": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/prompts/suggest": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"followers": {
"/followers/list": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/followers/ids": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"statuses": {
"/statuses/mentions_timeline": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/statuses/show/:id": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
},
"/statuses/oembed": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
},
"/statuses/retweeters/ids": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/statuses/home_timeline": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/statuses/user_timeline": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
},
"/statuses/retweets/:id": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/statuses/retweets_of_me": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"help": {
"/help/privacy": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/help/tos": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/help/configuration": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/help/languages": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"friends": {
"/friends/ids": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/friends/list": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"direct_messages": {
"/direct_messages/show": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/direct_messages/sent_and_received": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/direct_messages/sent": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/direct_messages": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"account": {
"/account/verify_credentials": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/account/settings": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"favorites": {
"/favorites/list": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"saved_searches": {
"/saved_searches/destroy/:id": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/saved_searches/list": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/saved_searches/show/:id": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
},
"search": {
"/search/tweets": {
"limit": 180,
"remaining": 180,
"reset": 1380314146
}
},
"trends": {
"/trends/available": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/trends/place": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
},
"/trends/closest": {
"limit": 15,
"remaining": 15,
"reset": 1380314146
}
}
}
}
내가 언급 했어야 할 점은 JSON.Net에는 이러한 필드 이름에 문제가 없다는 점입니다. 나는 디시리얼라이저를 교환하려고 할 때만이 문제에 부딪쳤다. –
API에서 반환 한 샘플 Json으로 게시물을 업데이트했습니다. 해당 필드 이름을 처리하는 것에 대한 제안 사항이 있습니까? –
'Dictionary Lists'또는 [동적으로 구문 분석] (https://github.com/ServiceStack/ServiceStack.Text#supports-dynamic-json)과 같은 JSON과 일치하는 속성을 사용하십시오. –
mythz