解决方案 »

  1.   

    最近Google又被封了,百度又不给力
      

  2.   

    调用JSON.stringify前,你将对象转为字符就好了sList.SpecialDate=sList.SpecialDate.toString();/////
    var da=....你原来的代码
      

  3.   


    我明白你的意思,是把Date()转换成String类型来避免其把日期转换把?但是,我定义的SpecialDate是Date类型,    export interface SpecialCalerendar {
            ID: number;
            FacilityID: number;
            SpecialType: number;
            SameAsNormalWorkDay: boolean;
            SpecialDate: Date;
            StartHour :number;
            EndHour: number;
            IsOT :boolean;
            Description: string;
            UpdateUser : string;
            UpdateDate : Date;
        }如果改成String会比较麻烦,因为很多地方需要用到日期的比较,判断,排序等,如果现在改成string,有几十个文件要改了。但是你的方法可行!
      

  4.   

    本帖最后由 showbo 于 2014-06-10 17:32:04 编辑
      

  5.   

    json 不支持日期对象,改用毫秒吧 . 
      

  6.   


    我明白你的意思,是把Date()转换成String类型来避免其把日期转换把?但是,我定义的SpecialDate是Date类型,    export interface SpecialCalerendar {
            ID: number;
            FacilityID: number;
            SpecialType: number;
            SameAsNormalWorkDay: boolean;
            SpecialDate: Date;
            StartHour :number;
            EndHour: number;
            IsOT :boolean;
            Description: string;
            UpdateUser : string;
            UpdateDate : Date;
        }如果改成String会比较麻烦,因为很多地方需要用到日期的比较,判断,排序等,如果现在改成string,有几十个文件要改了。但是你的方法可行!
    不用改的啊。。JSON.stringify最后转换日期对象为成字符串后也是以字符串传递,并不是Date对象,ajax传递不了对象的,都要转为字符串如
    var d={d:new Date()};
    var s=JSON.stringify(d);//其实s的内容就是 {"d":"你的时间字符串"}只是你提前调用了toString转为需要的格式,而不是JSON.stringify帮你转换的格式项目用的是typescript,属于强类型,也就是说,传进来的list 已经是一个Date的对象了,假如,我要把list 的每一个object的specialDate再转换一次,那工程不是一般的大;
    下面的代码就是list中的每一个object的属性,
    [code=typescript]
        export interface SpecialCalerendar {
            ID: number;
            FacilityID: number;
            SpecialType: number;
            SameAsNormalWorkDay: boolean;
            SpecialDate: Date;
            StartHour :number;
            EndHour: number;
            IsOT :boolean;
            Description: string;
            UpdateUser : string;
            UpdateDate : Date;
        }
    [/code]
    另外,也不知道客户端会不会有影响,因为我几乎把所有验证逻辑都写在客户端,服务器几乎不验证,减少服务器的负荷。
    我希望的是重写JSON.stringify  方法、
      

  7.   

    这个也是一个解决方法,但是,和版主的一样,typescript是强类型,在实体类中,已经把specialDate定义为Date类型,要改实体类的属性不科学
      

  8.   


    我明白你的意思,是把Date()转换成String类型来避免其把日期转换把?但是,我定义的SpecialDate是Date类型,    export interface SpecialCalerendar {
            ID: number;
            FacilityID: number;
            SpecialType: number;
            SameAsNormalWorkDay: boolean;
            SpecialDate: Date;
            StartHour :number;
            EndHour: number;
            IsOT :boolean;
            Description: string;
            UpdateUser : string;
            UpdateDate : Date;
        }如果改成String会比较麻烦,因为很多地方需要用到日期的比较,判断,排序等,如果现在改成string,有几十个文件要改了。但是你的方法可行!
    不用改的啊。。JSON.stringify最后转换日期对象为成字符串后也是以字符串传递,并不是Date对象,ajax传递不了对象的,都要转为字符串如
    var d={d:new Date()};
    var s=JSON.stringify(d);//其实s的内容就是 {"d":"你的时间字符串"}只是你提前调用了toString转为需要的格式,而不是JSON.stringify帮你转换的格式项目用的是typescript,属于强类型,也就是说,传进来的list 已经是一个Date的对象了,假如,我要把list 的每一个object的specialDate再转换一次,那工程不是一般的大;
    下面的代码就是list中的每一个object的属性,
    [code=typescript]
        export interface SpecialCalerendar {
            ID: number;
            FacilityID: number;
            SpecialType: number;
            SameAsNormalWorkDay: boolean;
            SpecialDate: Date;
            StartHour :number;
            EndHour: number;
            IsOT :boolean;
            Description: string;
            UpdateUser : string;
            UpdateDate : Date;
        }
    [/code]
    另外,也不知道客户端会不会有影响,因为我几乎把所有验证逻辑都写在客户端,服务器几乎不验证,减少服务器的负荷。
    我希望的是重写JSON.stringify  方法、你服务器端接受到的也就是 {"d":"你的时间字符串"},也是字符串,不是时间类型,只是你动态页给自动转换成了Date类型而已,这个和服务器无关,你客户端转成的时间格式的字符串符合你的Date类型可以转换的格式就行了。这个不是在服务器端之间的参数的传递,类型一定要完全一样
      

  9.   

    json 就是字符串嘛。你别为难它啦。
    你说的对,自己写一个序列化和反序列化的方法去处理比较妥当。
    不过一般上后端都有写好的组建可以处理日期格式的。p.s 前端的验证是不太靠谱的,因为js 容易被更改。 如果重要文件还是在后端再验证一次较为妥当。
      

  10.   

    我也是想重写json的   原本以为要重写typescript接口  后来发现不用,那么处理起来就容易了,修改stringify的逻辑就可以了。后端是有验证的,不过只是简单验证,为的就是减轻服务器的负荷