Erlang 聊天室程序(四) 数据交换格式---json的encode

                上一篇实现了json数据到message记录的转换,这篇则是将message还原为json以便发送给客户端。

                首先完善上篇中creationDate部分的解析:

para({"creationDate",Val},Data)->
	{obj,List}=Val,
	Time=#time{},
	NewData1=Data#message{time=Time},
	NewData=paraEle(List,NewData1)
;
para({"date",Val},Data) when is_integer(Val)->
	io:format("para date:~p~n",[Data]),
	#message{time=Time}=Data,
	NewTime=Time#time{date=Val},
	NewData=Data#message{time=NewTime}	
;
para({"day",Val},Data) when is_integer(Val)->
	io:format("para day:~p~n",[Data]),
	#message{time=Time}=Data,
	NewTime=Time#time{day=Val},
	NewData=Data#message{time=NewTime}	
;
para({"hours",Val},Data) when is_integer(Val)->
	#message{time=Time}=Data,
	NewTime=Time#time{hours=Val},
	NewData=Data#message{time=NewTime}	
;
para({"minutes",Val},Data) when is_integer(Val)->
	#message{time=Time}=Data,
	NewTime=Time#time{minutes=Val},
	NewData=Data#message{time=NewTime}	
;
para({"month",Val},Data) when is_integer(Val)->
	#message{time=Time}=Data,
	NewTime=Time#time{month=Val},
	NewData=Data#message{time=NewTime}	
;
para({"seconds",Val},Data) when is_integer(Val)->
	#message{time=Time}=Data,
	NewTime=Time#time{seconds=Val},
	NewData=Data#message{time=NewTime}	
;
para({"time",Val},Data) when is_integer(Val)->
	#message{time=Time}=Data,
	NewTime=Time#time{thetime=Val},
	NewData=Data#message{time=NewTime}	
;
para({"timezoneOffset",Val},Data) when is_integer(Val)->
	#message{time=Time}=Data,
	NewTime=Time#time{offset=Val},
	NewData=Data#message{time=NewTime}	
;
para({"year",Val},Data) when is_integer(Val)->
	#message{time=Time}=Data,
	NewTime=Time#time{year=Val},
	NewData=Data#message{time=NewTime}	
;

            再编写编码部分:

paraseEncode(Message)->
	{message,Id,Type,From,To,Subject,Content,Time}=Message,
	{time,Date,Day,Hours,Minutes,Month,Seconds,TheTime,Offset,Year}=Time,
	Data={obj,[{"content",list_to_binary(Content)},
		  	  {"from",list_to_binary(From)},
		  	  {"to",list_to_binary(To)},
		  	  {"subject",list_to_binary(Subject)},
		  	  {"id",list_to_binary(Id)},
		      {"type",list_to_binary(Type)},
		 	  {"creationDate",{obj,[{"date",Date},
							   {"day",Day},
							   {"hours",Hours},
						       {"minutes",Minutes},
							   {"month",Month},
							   {"seconds",Seconds},
							   {"time",TheTime},
							   {"timezoneOffset",Offset},
							   {"year",Year}
								]
							  }
			  }]
		  },
   rfc4627:encode(Data)
.
         测试如下:

14> util_MessageParas:paraseEncode({message,"289n-2","msg","client1",[],"chat","aaa",
         {time,27,1,18,8,1,26,1330337306984,-480,112}}).
"{\"content\":\"aaa\",\"from\":\"client1\",\"to\":\"\",\"subject\":\"chat\",\"id\":\"289n-2\",\"type\":\"msg\",\"creationDate\":{\"date\":27,\"day\":1,\"hours\":18,\"minutes\":8,\"month\":1,\"seconds\":26,\"time\":1330337306984,\"timezoneOffset\":-480,\"year\":112}}"


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值