Десериализация JSON с помощью JavaScriptSerializer C # - PullRequest
4 голосов
/ 25 марта 2010

Я экспериментирую с JavaScriptSerializer для десериализации некоторого JSON в C # и у меня есть пара вопросов относительно использования DataMember.

  1. Я хочу, чтобы у моего класса DataContract было свойство "Parts", которое отображается на объект JSON "rings". Если я установлю DataMember Name = "rings" и назову свойство "Rings", все будет работать как положено. Однако, если я назову свойство «Детали» (оставив DataMember Name = «rings»). Части всегда нулевые.

    // this is always null
    [DataMember(Name = "rings")]
    public ArrayList Parts { get; set; }
    
    // this works fine
    [DataMember(Name = "rings")]
    public ArrayList Rings { get; set; }
    
  2. При десериализации возможно ли сопоставить несколько объектов json одному свойству. Например, входная строка json может содержать не «кольца», а «точку» или «линию». Могу ли я сопоставить все три типа свойству Parts?

Ответы [ 2 ]

4 голосов
/ 25 мая 2010

JavaScriptSerializer находится в System.Web.Extensions и не знает о DataMemberAttribute.

Попробуйте DataContractJsonSerializer , который находится в System.Runtime.Serialization.Json.

0 голосов
/ 25 марта 2010

Я рекомендую вам использовать другую реализацию JSON для .NET. Есть много из них с открытым исходным кодом, которые не требуют смены классов. Вы просто должны передать свой объект, и они знают, что делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...