2
我試圖反序列化與RateString.Text的Twitter RateLimit Json。我創建了一個適當的DTO對象(查看帖子的底部),讓JSON被拉下來。我利用System.Runtime.Serialization將字段重命名爲更友好的名稱(我在Twitter的許多其他DTO對象中使用了此名稱)。反序列化對象時,RateLimitContext正確反序列化,但是在資源反序列化下的所有項目都爲空。我懷疑這個特定對象的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的帖子。您對處理這些字段名稱有任何建議嗎? –
使用一個匹配JSON的屬性,比如'Dictionary Lists'或[動態解析它](https://github.com/ServiceStack/ServiceStack.Text#supports-dynamic-json) –
mythz