Измените имена членов при использовании Json.Encode () для сериализации объекта - PullRequest
1 голос
/ 18 ноября 2011

Я ищу способ изменить имя свойства при его кодировании в JSON, которое работает аналогично тому, как DisplayAttribute можно использовать для изменения его отображаемого имени.

Например, если я закодировал следующий класс в строку JSON

 public class LatLng
{
    public double Latitude { get; set; }
    public double Longitude { get; set; }
}

string result = Json.Encode(new LatLng{ Latitude = 10, Longitude = 20 });

результат будет: {"Latitude":10,"Longitude":20}

Есть ли способ создать JsonNameAttribute для добавления к каждому свойству класса, как показано ниже

 public class LatLng
{
    [JsonName("lat")]
    public double Latitude { get; set; }
    [JsonName("lng")]
    public double Longitude { get; set; }
}

string result = Json.Encode(new LatLng{ Latitude = 10, Longitude = 20 });

Таким образом, результат будет: {"lat":10,"lng":20}?

Можно ли это сделать без создания собственного сериализатора JSON?

1 Ответ

0 голосов
/ 18 ноября 2011

Существует несколько возможностей:

  • Определите модель представления, которая будет иметь правильные значения, а затем сопоставьте вашу модель домена LatLng с этой моделью представления и сериализуйте модель представления.
  • Класс JavaScriptSerializer не поддерживает атрибуты, но вы можете написать собственный JavaScriptConverter .
  • Использовать класс DataContractJsonSerializer , который позволяетопределить имена членов, украсив их атрибутом [DataMember].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...