JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。
var txt = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval( 可用于将 JSON 文本转换为 JavaScript 对象。
var obj = eval ("(" + txt + "";
除此之外的常用方法还有:
JSONObject json = new JSONObject(map;
2、String转换成json
JSONObject.parseObject(StringText
3、List转换成json
JSONArray json = new JSONArray(list;
4、json转换成List
list = JSONObject.parseArray(list,String.class
但其实我们在进行数据传输的时候,除了我们常见的数据如数组等格式之外,"时间"也是数据传输中的重要类型。
OADate的处理
相信有用过日期格式并进行过json数据导出的小伙伴应该不难发现,当单元格的值是一个日期时,我们导出的日期数据会被储存为OADate。
通常情况下我们使用OADate是为了解决日期序列化以及时区问题,所以我们使用这种特殊的方式保存日期。但是很多情况下我们需要对日期数据进行一些处理,但是无奈的是不知如何进行转换。
接下来我们来解决JSON日期格式数据处理问题,且针对不同编程环境都有解决方案。
function fromOADate(date {
var oaDateReg = new RegExp('^/OADate\\(([-+]?(\\d+(\\.\\d*?|\\.\\d+([eE][-+]?\\d+?\\/\\s*
;
if (typeof date === "string" && oaDateReg.test(date {
var oadate = parseFloat(date.match(oaDateReg[1];
var ms = (oadate * 86400000 * 1440 - 25569 * 86400000 * 1440 + new Date((oadate - 25569 * 86400000.getTimezoneOffset( * 86400000 / 1440;
return new Date(ms;
}else{
return date;
}
}
sheet.tag("/OADate(44542/";
var date = sheet.tag(;
long d = 44542;
double mantissa = d - (long d;
double hour = mantissa*24;
double min =(hour - (longhour * 60;
double sec=(min- (longmin * 60;
SimpleDateFormat myFormat = new SimpleDateFormat("dd MM yyyy";
Date baseDate = myFormat.parse("30 12 1899";
Calendar c = Calendar.getInstance(;
c.setTime(baseDate;
c.add(Calendar.DATE,(intd;
c.add(Calendar.HOUR,(inthour;
c.add(Calendar.MINUTE,(intmin;
c.add(Calendar.SECOND,(intsec;
System.out.println(c.getTime(;
System.DateTime.FromOADate(44542