[转载]ECSHOP物流跟踪插件,支持所有快递,很快很稳定 - ECSHOP120

mikel阅读(1071)

[转载]ECSHOP物流跟踪插件,支持所有快递,很快很稳定 – ECSHOP120.

前言:
有HTML和JS基础的可自行下载安装,
没有任何基础,需要本站协助安装的,请联系本站客服人员。

介绍:
闲话少叙,相信很多站长看到标题后都明白“ECSHOP物流跟踪插件”是什么意思。
首先说明一点,本插件使用的接口是由“友商快递100” 提供的,
本接口几乎支持所有快递,而且查询速度很快很稳定。

演示地址:请向客服咨询
测试用户名:test
测试密码:test12345
用上面账户登录用户中心,进“我的订单”,点击订单号就看到了。

安装:

1)、
首先需要到“友商快递100” 网站上“申请API”,
申请地址为:http://www.kuaidi100.com/openapi/
申请审批过程需要1-2天,审批通过后,请牢记您的密钥。

2)、
下载ECSHOP物流跟踪插件,
下载地址为:http://www.ecshop120.com/data/plugin/plugin-26.rar

3)、

下载解压,会得到如下目录结构

包含2个文件夹,共5个文件:

 

Plugins<DIR>

 

|- kuaidi100

 

|- express.php

 

|- kuaidi100_company.php

 

|- snoopy.php

 

themes< DIR >

|-user_transaction.dwt

首先修改 /plugins/kuaidi100/express.php
将 $AppKey=’XXXXXX’;  里的 XXXXXX 修改成你在第 1)步中申请到的KEY 密钥。
然后将 kuaidi100 整个子目录上传到 /plugins 下

然后修改你的 /themes/你的模板文件夹/user_transaction.dwt
修改标准请参照我的同名文件。
注意:文件里带有“By www.ecshop120.com ” 字样的代码就是我增加或修改过的,
可“依葫芦画瓢”照着修改就行了。

资源源于积累 积累产生价值

mikel阅读(831)

互联网太大,同样由于大,获取信息的先后就产生利润,比如淘宝上有人在卖1元的免费电影下载链接

这是什么?这就是利用信息资源产生价值

同样资源不是你与生俱来就掌握的东西,而是源于积累,每天点滴积累获得资源,然后去挖掘其中的价值

我的博客www.mikel.cn7年了,基本上每天都有更新,主要内容就是我开发过程中遇到的问题后,转载的相关的解决方案的文章和自己总结的解决问题的方法,这7年的积累,基本这个博客成了我的智囊团,遇到问题不用百度,直接这里找就行了。

还有今天看到有人通过分享网盘文件,别人下载获利,提现了2600,人家就是每天更新网盘中的文件,然后去论坛发布有人下载就能获得积分提现,原理很简单,真正能做到提现这么多的很少,为什么?还是缺乏那份儿坚持和积累。

王通说坚持不好,是贬义的,不如享受让人愉悦,的确很多事儿要是硬着头比坚持做,大家总是有种强迫的感觉,当你很享受的做着资源积累,然后享受因为积累让自己受益的时候 那很多事都容易做了。

开始是享受,慢慢等形成习惯,你会发现自己可以掌控和利用的东西很多,无形中给自己所从事的工作产生助力,潜移默化的产生着影响。

就像读书,为什么说书到用时方恨少,就是这个道理。

互联网成为提款机不是不可能,当掌握的资源到一定程度,你加以利用水到渠成就可以变现,为什么那么多自媒体纷纷争定位各个不同领域,然后拉粉打赏,就是在积累然后对读者产生价值,读者受益了,自然就会为价值买单。

[转载]自定义微信易信平台分享内容 - ZRainna - 博客园

mikel阅读(1130)

[转载]自定义微信易信平台分享内容 – ZRainna – 博客园.

当一个链接在微信或易信浏览器里打开时,不管这个链接是公众号里的内容还是扫码打开的链接,分享给好友或是朋友圈时,分享的内容默认从网页中取,包 括页面中的图片和title。当页面中没有图片时,会采用平台默认的图片,当页面没有title时,会使用页面的链接地址作为分享的标题。这里可以通过设 置shareData对象和调用jsbridge方法自定义分享的数据,包括分享的图片,标题,描述等。

像这种代码太具有依赖性,使用方法完全取决于对方平台的接口,相对来说,维护成本也较高。不过有时为了项目的推广和流量,这样做也是值得的。

 

1.首先定义shareData对象来保存分享的数据

window.shareData = {
"imgUrl": "图片链接",
"tImgUrl": "分享到朋友圈的图片",
"fImgUrl": "分享给好友的图片",
"wImgUrl": "分享到微博的图片",
"timeLineLink": "分享到朋友圈的链接",
"sendFriendLink": "分享给好友的链接",
"weiboLink": "分享到微博的连接",
"tTitle": "分享到朋友圈的标题",
"tContent": "分享到朋友圈的描述",
"fTitle": "分享给好友的标题",
"fContent": "分享给好友的描述",
"wContent": "分享到微博的内容"
};

如果tImgUrl,fImgUrl,wImgUrl没有的话则从imgUrl里取值。

 

2.调用jsbridge方法

微信支持分享到好友,朋友圈。易信则支持分享到好友,朋友圈,新浪微博。

客户端处理流程为:

1.检测web是否监听相应的分享事件(’menu:share:appmessage’,’menu:share:timeline’,’menu:share:weibo’),如果web监听这些事件则触发这些事件,没有则到步骤2。

2.检查window下是否定义shareData,如果定义该数据则分享该数据中的内容,没有则到步骤3。

3.使用默认的分享机制(去网页抓取分享内容)。

方法调用,易信为例

1.分享给好友

YixinJSBridge.on('menu:share:appmessage', function (argv) {
    YixinJSBridge.invoke('sendAppMessage', { 
        "img_url": window.shareData.imgUrl,
        "img_width": "640",
        "img_height": "640",
        "link": window.shareData.sendFriendLink,
        "desc": window.shareData.fContent,
        "title": window.shareData.fTitle
    }, function (res) {
        不用处理,客户端会有分享结果提示
    })
});

2.分享到朋友圈

YixinJSBridge.on('menu:share:timeline', function (argv) {
    YixinJSBridge.invoke('shareTimeline', {
        "img_url": window.shareData.imgUrl,
        "img_width": "640",
        "img_height": "640",
        "link": window.shareData.timeLineLink,
        "desc": window.shareData.tContent,
        "title": window.shareData.tTitle
    }, function (res) {
        不用处理,客户端会有分享结果提示
    });
});

3.分享到微博

YixinJSBridge.on('menu:share:weibo', function (argv) {
    YixinJSBridge.invoke('shareWeibo', {
        "content": window.shareData.wContent,
        "url": window.shareData.weiboLink,
    }, function (res) {
        不用处理,客户端会有分享结果提示
    });
});

易信最新版本支持。

3.案例说明

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>个性化定制微信易信平台分享内容</title>
</head>

<body>
<div class="m-shareintro">当一个链接在微信或易信浏览器里打开时,不管这个链接是公众号里的内容还是扫码打开的链接,分享给好友或是朋友圈时,分享的内容默认从网页中取,包括页面中的图片和title。当页面中没有图片时,会采用平台默认的图片,当页面没有title时,会使用页面的链接地址作为分享的标题。这里可以通过设置shareData对象和调用jsbridge方法自定义分享的数据,包括分享的图片,标题,描述等。</div>

<script>
window.shareData = {
    "imgUrl": 'http://m3.img.srcdd.com/farm5/d/2014/1012/21/791FDBCEFB8B31A0AF6EFBFE84CB41D7_B250_400_250_302.jpeg',   
    "tImgUrl": "http://m1.img.srcdd.com/farm4/d/2014/1012/21/E01EA983123F6279E784F17A37DFDC7B_B250_400_250_250.jpeg",
    "fImgUrl": "http://m2.img.srcdd.com/farm4/d/2014/1012/21/A77FB27F302693357F48BD6273768896_B250_400_250_270.jpeg",
    "wImgUrl": "http://m3.img.srcdd.com/farm5/d/2014/1012/21/B049FFAA94A568378BE08887609265E2_B250_400_250_265.jpeg",
    "timeLineLink": location.href,
    "sendFriendLink": location.href,
    "weiboLink": location.href,
    "tTitle": "分享到朋友圈的标题",
    "tContent": "分享到朋友圈的描述",
    "fTitle": "分享给好友的标题",
    "fContent": "分享给好友的描述",
    "wContent": "分享到微博的内容"
};

//分享给好友
var _weixinSendAppMessage = function(){
    WeixinJSBridge.on('menu:share:appmessage', function (argv) {
        WeixinJSBridge.invoke('sendAppMessage', { 
            "img_url": window.shareData.imgUrl,
            "img_width": "640",
            "img_height": "640",
            "link": window.shareData.sendFriendLink,
            "desc": window.shareData.fContent,
            "title": window.shareData.fTitle
        }, function (res) {
            //不用处理,客户端会有分享结果提示
        })
    });
};

//分享到朋友圈
var _weixinShareTimeline = function(){
    WeixinJSBridge.on('menu:share:timeline', function (argv) {
        WeixinJSBridge.invoke('shareTimeline', {
            "img_url": window.shareData.imgUrl,
            "img_width": "640",
            "img_height": "640",
            "link": window.shareData.timeLineLink,
            "desc": window.shareData.tContent,
            "title": window.shareData.tTitle
        }, function (res) {
            //不用处理,客户端会有分享结果提示
        });
    });
};
    
//分享给好友
var _yixinSendAppMessage = function(){
    YixinJSBridge.on('menu:share:appmessage', function (argv) {
        YixinJSBridge.invoke('sendAppMessage', { 
            "img_url": window.shareData.imgUrl,
            "img_width": "640",
            "img_height": "640",
            "link": window.shareData.sendFriendLink,
            "desc": window.shareData.fContent,
            "title": window.shareData.fTitle
        }, function (res) {
            //不用处理,客户端会有分享结果提示
        })
    });
};

//分享到朋友圈
var _yixinShareTimeline = function(){
    YixinJSBridge.on('menu:share:timeline', function (argv) {
        YixinJSBridge.invoke('shareTimeline', {
            "img_url": window.shareData.imgUrl,
            "img_width": "640",
            "img_height": "640",
            "link": window.shareData.timeLineLink,
            "desc": window.shareData.tContent,
            "title": window.shareData.tTitle
        }, function (res) {
            //不用处理,客户端会有分享结果提示
        });
    });
};

//分享到微博
var _yixinShareWeibo = function(){
    YixinJSBridge.on('menu:share:weibo', function (argv) {
        YixinJSBridge.invoke('shareWeibo', {
            "content": window.shareData.wContent,
            "url": window.shareData.weiboLink,
        }, function (res) {
            //不用处理,客户端会有分享结果提示
        });
    });    
};

if(navigator.userAgent.toLowerCase().indexOf('micromessenger')>0) {
    if(!!window.WeixinJSBridge){
        _weixinSendAppMessage();
        _weixinShareTimeline();
    }else{
        document.addEventListener('WeixinJSBridgeReady',function(){
            _weixinSendAppMessage();
            _weixinShareTimeline();
        },false);
    }
}else if(navigator.userAgent.toLowerCase().indexOf('yixin') > 0){
    if(!!window.YixinJSBridge){
        _yixinSendAppMessage();
        _yixinShareTimeline();
    }else{
        document.addEventListener('YixinJSBridgeReady', function() {
            _yixinSendAppMessage();
            _yixinShareTimeline();
        },false);
    }
}
</script>
</body>
</html>

学习推广最好的方法

mikel阅读(940)

很多人都在问怎么推广xx项目?

可是很少有人留心观察xx项目写的推广攻略之类的很有价值的资料以及一些推广xx项目高手的文章,既然人家能够推广xx项目日赚千元,肯定有人家的方法和过人之处

有参考总比摸黑自己摸索要强,只是执行力的问题,狠狠执行多请教

其实最简单的方法就是加入这些推广项目建立的官方QQ群 ,既然官方的QQ推广群,肯定是想让更多人去更好更有效的推广项目,一定不遗余力的提供最实用效果最好的推广方法分享给群的推广成员,这些都是你学习的最好干货,还会定期请大神组织推广培训以便让推广员们更好的推广项目,这些都是难得的学习机会,而且还是免费的!

学习推广最后的方法就是加推广群,进行交流分享,现在已经不再是个人英雄的时代了,必须抱团取暖才能合作共赢。

最后,还是执行力,再好的推广方法,没有执行力都是白搭

不用多想,找到一种方法,狠狠执行,运用到极致就会产生不同凡响的效果,天天写QQ日志 简单吧?能天天一篇雷打不动的写下去,而且是篇篇干货不断,扪心自问有几个能真正做到?!做到的都是凤毛麟角!

看到人家做自媒体,写个日志都能有人打赏个几千,心里不服气,那你也写啊?!没人拦着你!

这就是差距,为什么成功和失败就差那么一点儿?就是这么一点儿就差之毫厘失之千里 !

因为这就是最本质的东西!

[转载][C#技术] .NET平台开源JSON库LitJSON的使用方法 - 郑文亮 - 博客园

mikel阅读(1075)

[转载][C#技术] .NET平台开源JSON库LitJSON的使用方法 – 郑文亮 – 博客园.一个简单示例:

String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemid’:1002,’itemname’:’hello2’}]}"; //*** 读取JSON字符串中的数据 ******************************* JsonData jd = JsonMapper.ToObject(str); String name = (String)jd["name"]; long id = (long)jd["id"]; JsonData jdItems = jd["items"]; int itemCnt = jdItems.Count; // 数组 items 中项的数量 foreach (JsonData item in jdItems) // 遍历数组 items {int itemID = (int)item["itemid"]; String itemName = (String)item["itemname"]; }
//*** 将JsonData转换为JSON字符串 ***************************
String str2 = jd.ToJson();


下载地址 :下载

LitJSON是一个.NET平台下处理JSON格式数据的类库,小巧、快速。它的源代码使用C#编写,可以通过任何.Net平台上的语言进行调用,目前最新版本为LitJSON 0.5.0。

与以下这几个.Net平台上的开源JSON库相比,LitJSON的性能遥遥领先:

Jayrock version 0.9.8316

LitJSON version 0.3.0

Newtonsoft Json.NET version 1.1

下面介绍LitJSON中常用的方法:

以下示例需要先添加引用LitJson.dll,再导入命名空间 using LitJson;

点击直接下载LitJSON.dll,也可以到http://litjson.sourceforge.net去下载。 

1、Json 与 C#中 实体对象 的相互转换

例 1.1:使用 JsonMapper 类实现数据的转换

ublic class Person
{
public string Name { get; set; }
public int Age { get; set; }
public DateTime Birthday { get; set; }
}
public class JsonSample
{
public static void Main()
{
PersonToJson();
JsonToPerson();
}
///
/// 将实体类转换成Json格式
///
public static void PersonToJson()
{
Person bill = new Person();
bill.Name = "www.87cool.com";
bill.Age = 3;
bill.Birthday = new DateTime(2007, 7, 17);
string json_bill = JsonMapper.ToJson(bill);
Console.WriteLine(json_bill);
//输出:{"Name":"www.87cool.com","Age":3,"Birthday":"07/17/2007 00:00:00"}
}

///
/// 将Json数据转换成实体类
///
public static void JsonToPerson()
{
string json = @"
{
""Name"" : ""www.87cool.com"",
""Age"" : 3,
""Birthday"" : ""07/17/2007 00:00:00""
}";
Person thomas = JsonMapper.ToObject(json);
Console.WriteLine("’87cool’ age: {0}", thomas.Age);
//输出:’87cool’ age: 3
}
}

例 1.2:使用 JsonMapper 类将Json字符串转换为C#认识的JsonData,再通过Json数据的属性名或索引获取其值。

在C#中读取JsonData对象 和 在JavaScript中读取Json对像的方法完全一样;

对Json的这种读取方式在C#中用起来非常爽,同时也很实用,因为现在很多网络应用提供的API所返回的数据都是Json格式的,

如Flickr相册API返回的就是json格式的数据。

public static void LoadAlbumData(string json_text)
{
JsonData data = JsonMapper.ToObject(json_text);
Console.WriteLine("Album’s name: {0}", data["album"]["name"]);
string artist = (string)data["album"]["name"];
int year = (int)data["album"]["year"];
Console.WriteLine("First track: {0}", data["album"]["tracks"][0]);
}

2、C# 中对 Json 的 Readers 和 Writers

例 2.1:JsonReader类的使用方法

public class DataReader
{
    public static void Main ()
    {
        string sample = @"{
            ""name""  : ""Bill"",
            ""age""  : 32,
            ""awake"" : true,
            ""n""    : 1994.0226,
            ""note""  : [ ""life"", ""is"", ""but"", ""a"", ""dream"" ]
          }";
        ReadJson (sample);
    }
    //输出所有Json数据的类型和值
    public static void ReadJson (string json)
    {
        JsonReader reader = new JsonReader (json);
        
        Console.WriteLine ("{0,14} {1,10} {2,16}", "Token", "Value", "Type");
        Console.WriteLine (new String (’-’, 42));
        while (reader.Read())
        {
            string type = reader.Value != null ? reader.Value.GetType().ToString() : "";
            Console.WriteLine("{0,14} {1,10} {2,16}", reader.Token, reader.Value, type);
        }
    }
}
//输出结果:

//      Json类型        值          C#类型
//------------------------------------------
//  ObjectStart                            
//  PropertyName      name    System.String
//        String      Bill    System.String
//  PropertyName        age    System.String
//          Int        32    System.Int32
//  PropertyName      awake    System.String
//      Boolean      True  System.Boolean
//  PropertyName          n    System.String
//        Double  1994.0226    System.Double
//  PropertyName      note    System.String
//    ArrayStart                            
//        String      life    System.String
//        String        is    System.String
//        String        but    System.String
//        String          a    System.String
//        String      dream    System.String
//      ArrayEnd                            
//    ObjectEnd

例 2.2:JsonWriter类的使用方法

public class DataReader
{
    //通过JsonWriter类创建一个Json对象
    public static void WriteJson ()
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        JsonWriter writer = new JsonWriter (sb);
        writer.WriteArrayStart ();
        writer.Write (1);
        writer.Write (2);
        writer.Write (3);
        writer.WriteObjectStart ();
        writer.WritePropertyName ("color");
        writer.Write ("blue");
        writer.WriteObjectEnd ();
        writer.WriteArrayEnd ();
        Console.WriteLine (sb.ToString ());
        //输出:[1,2,3,{"color":"blue"}]
    }
}

更详细的可参考 http://litjson.sourceforge.net/doc/manual.html (英文)

传统企业转型中的百万商机

mikel阅读(957)

 现在传统企业都面临着转型,互联网对传统行业的冲击,让他们措手不及,又不知道如何下手

这就是痛点,也带给互联网人的一次巨大的商机,就是利用自己多年的互联网经验帮助传统企业转型

其实也不是什么新鲜模式,就是电商代运营,就是传统企业将线上业务承包给互联网公司进行运营,互联网公司从销售利润中分成作为服务费。

既解决了传统企业的迷茫,又解决了互联网企业不接地气儿的问题

不过这中间存在很多问题,互联网企业往往都是空谈的比较多,放卫星然后没下文了

传统企业都是商场中摸爬滚打过来的,往往不相信这些互联网的空降兵,前期的磨合阶段最重要

好处也很明显,节约传统企业的互联网投入运营成本,分担风险

如果传统企业自己招兵买马建了互联网运营部门,不说前期投入,就说这心理没底儿,就已经让企业老板头疼,什么都没看到就扔进去千八百万,不像线下建厂房还能看到东西啊,这到底有效果没效果还得摸索着来,不靠谱啊

将线上业务外包给电商代运营公司,人家轻车熟路,什么竞价、微信营销、推广、建站等等都门清儿,还不用给服务费,就按销售提成,就像是雇佣了一个互联网销售员,不发基本工资,只拿销售提成那种,传统企业不用投入成本,只是提供配货就行,没成本省心,靠谱。

这个市场有多大,中国有多少中小企业就有多大的市场,你说这个市场有多大

具体怎么操作,懂互联网的你的一定知道了,只要企业给你授权,那建站、推广营销都可以上,你就卖产品拿提成就是了。

好了,思路就在那,任何人都可以想明白,但是做又是另外一回事儿,就像马云说的:理想很丰满,现实很骨感

也有很多先驱被拍死在沙滩上,很多代运营电商的公司都在摸索,做不一定行,但是不做肯定是不行。

小痛点 大市场 威客的逆袭

mikel阅读(885)

 现在那么多免费的开源建站程序,比如商城程序ecshop,论坛dicusz,新闻内容管理帝国CMS、织梦等等…

这些程序都是免费的,让不懂程序的人也能简单的10分钟建站,不过也有不足的地方就是这些程序功能都是固定的,尽管源码是公开的,想要定制化功能需要进行二次开发

很多小公司使用了开源免费的建站程序都需要二次开发,根据自己的业务和市场修改功能,但是没有自己的技术团队,又急于使用这些功能,这就是痛点,还是非常痛的点

于是就产生了一个很大很大的开源程序二次开发的市场,市场有多大?

你想有多少人用这些免费程序建站的都是目标客户,你做二次开发,最简单的做模板就能卖很多钱,更不用说什么支付功能、移动APP了

其实技术上的难度并不大,这些程序源代码都在那了,任何人都可以去看,去学习怎么做模板,怎么二次开发

有点儿开发基础的都能做得来,前些日子搜ecshop的手机app开发,那么多公司都在做百度竞价烧钱推广

可想而知里面的利润有多大,看了下报价,一个ecshop的APP就5000多,卖一份5000多,可能成本就出来了,剩下卖的减去竞价的钱就是纯利润,可想这个行业有多暴利

这也就是为什么微软股价那么高的原因,软件在卖出成本后基本上就是0成本在赚钱了,

互联网还是建议要学点儿基本的编程知识,什么JavaScript、PHP、ASP等常用语言能看懂就行
 
上面说的那些开源程序能看懂源码,就看懂一个系统的源码,你能做模板、能做二次开发就能再互联网上赚到钱,

比如我最近做的网上银行支付接口,结果百度一搜,很多人需要做支付接口,你把调通的支付接口代码复制一份儿给他就行啦,没任何技术含量,因为各个银行的接口标准都是一样的,只不过是参数不同而已

在内行人看来很简单的东西,外行人就是痛苦的问题,他巴不得花钱请你帮他解决呢!

[转载]Mysql的 时间戳转换 和 c# 的时间戳转换 (以秒来进行转换,非毫秒,主要是mysql不能存毫秒) - 梨花驿路 - 博客园

mikel阅读(1743)

[转载]Mysql的 时间戳转换 和 c# 的时间戳转换 (以秒来进行转换,非毫秒,主要是mysql不能存毫秒) – 梨花驿路 – 博客园.

MySQL 时间戳函数 => 从时间 转成 时间戳

UNIX_TIMESTAMP()   获取当前服务器时间的时间戳

UNIX_TIMESTAMP('2013-01-01 12:33:19')  获取指定时间的时间戳

 

从时间戳转换成时间

SELECT FROM_UNIXTIME(1357014799)   这个可以带第二个参数,转成自己想要的日期格式

 

C#的时间戳

#region 将Unix时间戳转为C#格式时间

        /// <summary>
        /// 时间戳转为C#格式时间
        /// </summary>
        /// <param name="timeStamp">Unix时间戳格式</param>
        /// <returns>C#格式时间</returns>
        public static DateTime GetTime(string timeStamp)
        {
            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            long lTime = long.Parse(timeStamp + "0000000");
            TimeSpan toNow = new TimeSpan(lTime);
            return dtStart.Add(toNow);
        }

        #endregion

        #region DateTime时间格式转换为Unix时间戳格式

        /// <summary>
        /// DateTime时间格式转换为Unix时间戳格式
        /// </summary>
        /// <param name="time"> DateTime时间格式</param>
        /// <returns>Unix时间戳格式</returns>
        public static int ConvertDateTimeInt(DateTime time)
        {
            if (time == null || time==DateTime.MinValue)
            {
                return 0;
            }
            else
            {
                DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
                return (int)(time - startTime).TotalSeconds;
            }
        }

        #endregion

[转载]Newtonsoft.Json日期转换 - weixiao520 - 博客园

mikel阅读(1077)

[转载]Newtonsoft.Json日期转换 – weixiao520 – 博客园.

  在使用EasyUI做后台时,使用表格datagrid,用Newtonsoft.Json转换为Json格式后时间显示为2013-06-15 T00:00:00形式。

  后来研究了一下Newtonsoft.Json,在使用Newtonsoft.Json转换时,如转换时带有日期的对象。代码如下:

  Newtonsoft.Json.Converters.IsoDateTimeConverter timeConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter();
timeConverter.DateTimeFormat = yyyy’-‘MM’-‘dd’ ‘HH’:’mm’:’ss;
strJson = JsonConvert.SerializeObject(dataJson, Newtonsoft.Json.Formatting.Indented, timeConverter);//

 

参考了 http://m.cnblogs.com/37217/1631587.html

[转载]Json.net说法——(一)修饰标签,日期序列化 - 梅桦 - 博客园

mikel阅读(916)

[转载]Json.net说法——(一)修饰标签,日期序列化 – 梅桦 – 博客园.

通过属性标签自定义JSON序列化

 

 

 

JsonObjectAttribute:类修饰标签,用于控制类如何被序列化为一个json对象

 

JsonArrayAttribute:集合修饰标签,用于控制集合如何被序列化为一个json对象

 

JsonPropertyAttribute:域和属性修饰标签,用于控制它们如何被序列化为一个json对象中的属性

 

JsonConverterAttribute:类,域,属性修饰标签,用于指定序列化期间的转换器

 

 

示例代码:

[JsonObject(MemberSerialization.OptIn)]

public class Customer

{

[JsonProperty(PropertyName="ID")]

public int Unid { get; set; }

[JsonProperty]

public string CustomerName { get; set; }

[JsonProperty]

[JsonConverter(typeof(IsoDateTimeConverter))]

public DateTime CreateTime { get; set; }

public string Memo { get; set; }

}

JsonObjectAttribute

 

这个标签的成员序列化标志指定成员序列化是opt-in(要序列化的成员必须带有JsonPropertyDataMember标签)还是opt-out(默认所有的都会序列化,但通过JsonIgnoreAttribute标签可以忽略序列化。opt-outjson.net默认的)。

 

 

 

JsonPropertyAttribute

 

允许被序列化的成员自定义名字。这个标签同时标示出:在成员序列化设置为opt-in的时候,成员会被序列化。

 

 

 

JsonIgnoreAttribute

 

忽略域或属性的序列化

 

 

 

JsonConverterAttribute

 

用于指派转换对象的JsonSerializer

 

这个标签可以修饰类或类成员。用于修饰类时,通过此标签指派的JsonConverter会被设置为序列化类的默认方式。用于修饰属性或域成员时,被指派的JsonConverter会序列化它们的值。

 

 

 

序列化日期

 

json中的日期是困难的。这个问题来源于json细则本身,因为在json中没有日期的原义句法。这个细则包括对象,数组,字符串,整型和浮点,但它没有对日期定义相关的标准。在json.net中用于日期的默认的格式与微软:“\/Date(1198908717056)\/”这个一样。

 

 

 

DateTime JsonConverters

因为在json中没有关于日期的标准,在系统间的互操作过程中出现了大量不同的格式。幸运的是json.net提供了用于读写自定义日期格式的解决方案:JsonConverters。一个json转换器用于指定一种类型如何被序列化。

public class LogEntry

{

public string Details { get; set; }

public DateTime LogDate { get; set; }

}

public void WriteJsonDates()

{

LogEntry entry = new LogEntry

{

LogDate = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc),

Details = "Application started."

};

string defaultJson = JsonConvert.SerializeObject(entry);

// {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"}

string javascriptJson = JsonConvert.SerializeObject(entry, new JavaScriptDateTimeConverter());

// {"Details":"Application started.","LogDate":new Date(1234656000000)}

string isoJson = JsonConvert.SerializeObject(entry, new IsoDateTimeConverter());

// {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"}

}

JavaScriptDateTimeConverter

 

这个来自json.net的转换器是两种日期转换器之一。它是把日期序列化为一个js日期对象。

 

new Date(1234656000000)

 

 

 

IsoDateTimeConverter

 

这种转换器把日期序列化为一个ISO8601格式的字符串。

 

“2009-02-15T00:00:00Z”

这个类有一个日期格式化属性,用于自定义其它的格式字符串。

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园