2012-05-18 2 views
1

Возможно ли предоставить какой-нибудь пользовательский контрактный преобразователь для встроенного JsonSerializer?ServiceStack custom contract resolver

Данные ответ форматируется как это:

{ 
    "name":"Rob Angelier" 
} 

Свойство я хотел бы установить это: Имя

Вопрос: Как я могу десериализации от CamelCase до PascalCase обозначения?

Надеюсь, вы можете мне помочь!

ответ

1

Вы можете получить собственность имени либо:

string name = JsonObject.Parse(json)["name"]; 

В противном случае вы можете создать сильный типизированный класс, который соответствует JSON десериализации в, например:

class Contact { 
    public string Name { get; set; } 
} 
var contact = json.FromJson<Contact>(); 

В ServiceStack JSON набор тестов вы можете найти multiple different ways, чтобы десериализовать то же самое.

+0

Я знаю, как сериализовать и десериализовать. вопрос заключается в том, как мы можем десериализовать из обозначения верблюда в паскальную нотацию. Мы можем использовать так называемый пользовательский контрактный резольвер внутри библиотеки JSON.net, но это также возможно с помощью сериализатора ServiceStack? –

+0

Вот еще информация о том, что я ищу: http://james.newtonking.com/projects/json/help/ContractResolver.html –

+0

Deserializing не чувствителен к регистру, поэтому вы можете де-сериализовать между Pascal/camelCase и vice -versa. 'JsConfig.EmitCamelCaseNames = true;' emits, свойства camelCase :) например: https://github.com/ServiceStack/SocialBootstrapApi/blob/master/src/SocialBootstrapApi/App_Start/AppHost.cs#L94 – mythz