2014-01-11 6 views
1

Я создал класс C# со статическим методом, который конвертирует любой объект в объект JSON. Для этого я использовал JavaScriptSerializar. Вот мой кодПреобразование даты в объект JSON в C#

public class JS 
{ 
    public static string GetJSON(object obj) 
    { 
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     string retJSON = js.Serialize(obj); 
     return retJSON; 
    } 
} 

Я еще один класс, которые имеют только два свойства, Date & Remark. Вот мой класс

public class RemarkData 
{ 
    public DateTime Date { set; get; } 
    public string Remark { set; get; } 
} 

Теперь я преобразование объекта из RemarkData класса в формат JSON, используя следующий код

JS.GetJSON(objRemarkData); 

Вот результат я получаю

{ «Дата»: «/ Дата (1389403352042) /», «Примечание»: «Замечания см.»}

Вот вывод, что мне нужно

{ «Дата»: 1389403352042 «Примечание»: «Некоторые замечания»}

Что я должен сделать Тхо получить что-то выход? Любая помощь ?

+0

Вы будете вероятно, зарегистрируйте свой собственный преобразователь 'DateTime'. Помогают ли вам ответы на этот вопрос: http://stackoverflow.com/questions/1341719/custom-javascriptconverter-for-datetime? –

+0

Этот пример представляет собой дату преобразования в 'dd/mm/yyyy' или какой-то обычный формат, который я указываю. Но как дата преобразуется в этот тип значения в 1389403352042? –

+0

Это должно быть 'DateTime.Now.Ticks/TimeSpan.TicksPerMillisecond' –

ответ

2
double ticks = Math.Floor(objRemarkData.Date.ToUniversalTime() 
     .Subtract(new DateTime(1970, 1, 1))  
     .TotalMilliseconds); 
var newob = new { Date =ticks, Remark = objRemarkData.Remark}; 
JS.GetJSON(newob); 
+0

Как вы получаете строку даты JSON"/Date (1389403352042)/"для объекта DateTime? Просто строковые операции с числовым значением и оттуда? –

0

Вы можете попробовать JSON.NET, он сериализует дату в строку ISO.

public class JS 
{ 
    public static string GetJSON(object obj) 
    { 
     string retJSON = JsonConvert.SerializeObject(obj); 
     return retJSON; 
    } 
} 

Фактически, вы можете использовать его напрямую, не нужно обертывать внутри другой функции.

Это также, как asp.net web api сериализует объекты даты. Для получения дополнительной информации, почему строка ISO является хорошим выбором, ознакомьтесь с этой ссылкой http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

0

Это длинное число «миллисекунды с эпохи». Мы можем преобразовать это в нормальный яваскрипте дату, используя следующий фрагмент кода, как объяснено в другом так размещать Converting .NET DateTime to JSON

var d = new Date(); 
d.setTime(1245398693390); 
document.write(d); 

Можно также использовать хорошую библиотеку из http://blog.stevenlevithan.com/archives/date-time-format со следующим фрагментом ..

var newDate = dateFormat(jsonDate, "dd/mm/yyyy h:MM TT"); 
Смежные вопросы