现在的位置: 首页 > 综合 > 正文

JSON后台日期格式转化

2013年07月07日 ⁄ 综合 ⁄ 共 3551字 ⁄ 字号 评论关闭

如果你使用Extjs框架进行Web应用程序的开发时,会遇到许多关于时间的问题。其中主要的问题可能出现在两个方面:

      1、后台数据库中读取到日期格式的数据后,打包成JSON格式传到前台进行显示。

      2、前台以格式化(如常见的yyyy-MM-dd HH:mm:ss)的日期组织成JSON格式,后台进行转换存储时。

下面就这两个重要的问题进行详细的解说。

在含有年月日 时分秒的转化时,


String x="[{'id':'1','fixOkdate':'2013-07-23 10:47:00','containerNumber':'1',
'evaluatePrice':33,'contractor':'','operator':'','containerType':'','containerLevel':''
,'loggingMan':'','loggingDate':'','fixGroup':'','qc':''}]";
JSONArray obj = JSONArray.fromObject(x);
List<Map> list = JSONArray.toList(obj, Map.class);
for (int i = 0; i < list.size(); i++) {
	Map temp = list.get(i);
	String id = temp.get("id").toString();
	System.out.println(id);
}

x一定是一个数组,数组中包含有JSON格式的字符串才能正确取到ID值。

String param="{'id':'3','containerProperty':'3','boatName':'3','voyageNumber':'3',
'getContainerDate':null,'destinationPort':'3','ladingbillNumber':'3','containerType':'3',
'containerSize':'3'}";

YxFieldneedcn b=(YxFieldneedcn) MyTools.formJSONtoBean(param, YxFieldneedcn.class);
System.out.println(b);

对JSON格式的字符串中含有时间的字符串时,例如getContainerDate时,值为null或者为yyyy-MM-dd HH:mm:ss格式,否则在转化为Java对象的过程中将出错。不可以是空字符串。

Extjs学习。。。。

1、可以让函数自动执行、并且为函数传递参数

(function(name){
       console.log(name);
    }('wocao'))

2、

检测类型

 Ext.onReady(function(){
       var i,j,k,defaults;
       var xx='222'||{};
       var yy=222||{};
       var zz=defaults||{};
       console.log(typeof xx);// string
       console.log(typeof yy);//number
       console.log(typeof zz);//object
 }); 

3、输出对象及复制对象

Ext.onReady(function(){
       var i,j,k,defaults;
       var obj={ a:'aaa',b:'bbb',c:'ccc' };
       var xx=defaults||{};
       // 循环输出对象的属性
       for(i in obj){
         console.log(obj[i]);
         xx[i]=obj[i];
       }
       for(j in xx){
          console.log(xx[j]);
       }
    }); 

或者在Extjs4中可以直接使用框架提供的函数来完成。

 Ext.onReady(function(){
       var i,j,k,defaults;
       var obj={ a:'aaa',b:'bbb',c:'ccc' };
       var xx=defaults||{};
       // 循环输出对象的属性
       for(i in obj){
          Ext.apply(xx,obj);
       }
       for(j in xx){
          console.log(xx[j]);
       }
    }); 

4、

var x=true
console.log(!x?'222':'333');

当!x值为true时打印输出 222,当为false时打印输出333

5、

console.log(Ext.isObject(null));

值为false,纠正了JavaScript的关于空值也为对象的Bug

6、使用Ext.iterate迭代对象

var x={x:'1',y:'2',z:function(){}};
Ext.iterate(x,function(record,value){
   console.log(record);
   console.log(value);
},null);

7、

(function() {
  var x='2222';
  pp.bb={
    et:function(){
      console.log('et');
    }
  }
})();
console.log(pp.bb);

当在一个函数加上()()时,表示立刻执行这个函数。这样就可以访问函数中定义的属性和方法了。在加方法时,需要在一个属性对象中才可以。

8、获取Store中的参数

var store=Ext.StoreManager.get('yx.Summary');
var f=store.filters.items;
console.log(f[1].value);

这样就不可以使用store.proxy.extraParams方式添加,而应该使用store.filter("key","value")

9

var obj={'x':'bb'};
Ext.ClassManager.setNamespace('MyCompany.pkg.Example',obj);
alert(MyCompany.pkg.Example===obj);

结果为true

10、

Ext.define('Logger', {
             singleton: true,
             log: function(msg) {
                 console.log(msg);
             }
});
Logger.log('Hello');

11、

Ext.define('my',{
  extend: 'Ext.panel.Panel',
  bb:'bb_value',
  cc:function(){
     console.log('cc_function');
  }
});
Ext.define('my',{
   override:'my',
   dd:'dd'
});
var x=new my();
console.log(x.bb);

12、

在Extjs4的环境下可以这样进行循环

var xx=['dd','bb','cc'],t=xx.shift();
 for ( ; t ;t = xx.shift()) {
    console.log(t);
 }

// shift()函数的作用是删除数组中的第一个元素并返回

如上的循环 当判断t为null、undefined时,JavaScript将这值当作false来处理,所以就会停止执行。

13、

var m=new  cthd.model.xx.EvaluateBillFee({id:records[0].data.id});

这样可以获取一个新的Model实例

14、在Extjs4中如何保存一个上一次使用过的变量

Ext.onReady(function(){
			if(Ext.BLANK_IMAGE_URL.substr(0,4)!="data"){				
				Ext.BLANK_IMAGE_URL="./loader/images/s.gif";				
			}			
			//在此添加ExtJS代码
			var els=Ext.select(".smallImg");
			var bigImg=Ext.getDom("bigImg");
			var index=0;
			
			var fn=function(v){
			    console.log(index);
				var ell=els;
				ell.item(index).removeCls("select");			
				index=index+v;
				if(index<0){
					index=2;
				}else if(index>2){
					index=0;
				};
				var el=ell.item(index);
				el.radioCls("select");
				var src=el.dom.src;
				bigImg.src= src.substr(0,src.length-6)+src.substr(src.length-5);
			};
			
			Ext.create("Ext.util.KeyNav","div1",{
				up:function(){
					fn(-1);
				},
				down:function(){
					fn(1);
				},
				scope:this
			});
		});

抱歉!评论已关闭.