Конвертер для десериализации JSON


Я пишу пользовательский JavaScript конвертер, чтобы десериализовать JSON с некоторым. Вот несколько строк я пишу:

public override object Deserialize(IDictionary<string, object> dictionary, Type type, 
      JavaScriptSerializer serializer)
  {
    int NoteID;
    NotesModel TheObject = new NotesModel();

    if (dictionary.ContainsKey("NoteID"))
    {
      if (int.TryParse(serializer.ConvertToType<string>(dictionary["NoteID"]), 
          out NoteID))
      {
         TheObject.NoteID = serializer.ConvertToType<int>(dictionary["NoteID"]);
      }
    }

Как это может быть улучшено?



1267
4
задан 15 декабря 2011 в 09:12 Источник Поделиться
Комментарии
3 ответа

вы можете сделать

TheObject.NoteID = NoteID;

7
ответ дан 15 декабря 2011 в 09:12 Источник Поделиться

Это будет выглядеть так, вы уже преобразовать его в int с метод tryparse

public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
int noteID;
NotesModel TheObject = new NotesModel();

if (dictionary.ContainsKey("NoteID"))
{
if (int.TryParse(serializer.ConvertToType<string>(dictionary["NoteID"]), out noteID))
{
TheObject.NoteID = noteId;
}
}
}

или даже короче

public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
int noteID;
NotesModel TheObject = new NotesModel();

if (dictionary.ContainsKey("NoteID") && int.TryParse(serializer.ConvertToType<string>(dictionary["NoteID"]), out NoteID))
{
TheObject.NoteID = noteId;
}
}

3
ответ дан 15 декабря 2011 в 09:12 Источник Поделиться

Я рекомендую следующие...

public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer) 
{
int noteID;
NotesModel TheObject = new NotesModel();

object value;

if (dictionary.TryGetValue("NoteID", out value))
{
if (int.TryParse(serializer.ConvertToType<string>(value), out NoteID))
{
TheObject.NoteID = noteId;
}
}
}

Это должно сократить ваш запрос словарь на половину.

2
ответ дан 15 декабря 2011 в 09:12 Источник Поделиться