`
whiletrue
  • 浏览: 38195 次
  • 性别: Icon_minigender_1
  • 来自: 地球
社区版块
存档分类
最新评论

使用org.json解决部分日期问题

    博客分类:
  • json
阅读更多
因为需要对客户端提交至服务端的日期进行处理,对org.json(version 2)以及json2.js进行了些修改.
json2.js
Date.prototype.toJSON = function(key){
      return '@'+this.getUTCFullYear() + '-' +
      f(this.getUTCMonth() + 1) +
      '-' +
      f(this.getUTCDate()) +
      ' ' +
      f(this.getUTCHours()) +
      ':' +
      f(this.getUTCMinutes()) +
      ':' +
      f(this.getUTCSeconds()) +
      '@';
    };

JSONTokener.java
/**
     * Get the next value. The value can be a Boolean, Double, Integer,
     * JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object.
     * @throws JSONException If syntax error.
     *
     * @return An object.
     * @throws  
     */
    public Object nextValue() throws JSONException {
        char c = nextClean();
        String s;

        switch (c) {
            case '"':
           case '\'':
            	String tmp = nextString(c);
            	if(tmp.startsWith("@") && tmp.endsWith("@")){
            		try {
						return formatDate(tmp.substring(1,tmp.length()-1));
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						return tmp;
					}
            	}
                return tmp;[/color][/b]
            case '{':
                back();
                return new JSONObject(this);
            case '[':
            case '(':
                back();
                return new JSONArray(this);
        }
.................
       

就可得到日期对象了.
下面通过getMapByJsonData(String json)将json转化为map
public static Map getMapByJsonData(String json) throws JSONException {
		JSONObject jsonObject = new JSONObject(json);
		Map map = jsonObject.getMyHashMap();
		Set set = map.keySet();
		Iterator iterator = set.iterator();
		while (iterator.hasNext()) {
			Object key = (Object) iterator.next();
			Object value = map.get(key);
			if (value instanceof JSONObject) {
				map.put(key, converMap((JSONObject) value));
			} else if (value instanceof JSONArray) {
				map.put(key, converArrayList((JSONArray) value));
			}
		}
		return map;

	}

	private static Map converMap(JSONObject jsonObject) {
		Map map = jsonObject.getMyHashMap();
		Set set = map.keySet();
		Iterator iterator = set.iterator();
		while (iterator.hasNext()) {
			Object key = (Object) iterator.next();
			Object value = map.get(key);
			if (value instanceof JSONObject) {
				map.put(key, converMap((JSONObject) value));
			} else if (value instanceof JSONArray) {
				map.put(key, converArrayList((JSONArray) value));
			}
		}
		return map;
	}

	private static List converArrayList(JSONArray jsonArray) {
		ArrayList list = jsonArray.getMyArrayList();
		if (list == null) {
			return null;
		}
		for (int i = 0; i < list.size(); i++) {
			Object value = list.get(i);
			if (value instanceof JSONObject) {
				list.remove(i);
				value = converMap((JSONObject) value);
				list.add(i, value);
			} else if (value instanceof JSONArray) {
				list.remove(i);
				value = converArrayList((JSONArray) value);
				list.add(i, value);

			}
		}
		return list;
	}


还有点缺陷,就是服务端返回的日期类型,无法通过eval方法转换为日期,不知有哪位高人能指点下.
分享到:
评论
2 楼 Relucent 2009-12-14  
用毫秒的话 会简单很多。
1 楼 Relucent 2009-12-14  
public Object nextValue() throws JSONException {
char c = nextClean();
String s;

switch (c) {
case '"':
case '\'':
return nextString(c);
case 'n'://append date support (yaoyilang) TODO 2009121211
back();
String sign = nextTo('(');
if ("new Date".equals(sign)) {
next();
String msel =nextTo(')');
next();
return new java.util.Date(Long.parseLong(msel));
}
return "";
case '{':
back();
return new JSONObject(this);
case '[':
case '(':
back();
return new JSONArray(this);
}

相关推荐

    com.alibaba.fastjson.JSON , net.sf.json.JSONObject

    这些库的结合使用,可以构建起一套完整的JSON处理解决方案,无论是简单的数据交换,还是复杂的业务逻辑,都可以借助这些工具高效地完成。不过在实际项目中,由于Fastjson的高性能和易用性,现在更多开发者倾向于使用...

    Newtonsoft.Json-for-Unity-master

    "Newtonsoft.Json-for-Unity-master"是针对Unity引擎优化的版本,解决了Unity原生不支持Newtonsoft.Json的一些问题,如Unity的IL2CPP脚本后端对部分.NET特性不兼容的问题。此版本特别适合在Unity项目中使用,能够...

    Kingdee.BOS.WebApi.Client.dll反编译项目,用于解决Newtonsoft.Json冲突

    这个压缩包提供的"Kingdee.BOS.WebApi.Client-升级引用的Json版本,解决冲突问题"文件很可能包含了一个修改过的"Kingdee.BOS.WebApi.Client.dll",其中的Newtonsoft.Json依赖已经被更新到与项目其他部分兼容的版本。...

    Newtonsoft.Json

    5. 社区活跃:由于其开源和广泛的使用,Newtonsoft.Json拥有庞大的用户社区,提供了丰富的示例和问题解决方案。 四、应用场景 1. Web API通信:在ASP.NET Web API项目中,Newtonsoft.Json通常作为默认的JSON序列化...

    Elasticsearch 样例数据 accounts.json

    它广泛应用于日志分析、实时监控、信息检索等多个领域,其灵活性和高性能使其成为现代大数据解决方案的重要组成部分。 `accounts.json`是Elasticsearch中用于演示和测试的一个示例数据集,通常包含各种用户账户信息...

    logstash-template模板:logstash.json

    - **错误防范**:如果Logstash接收到的数据不符合模板定义,它会抛出错误,帮助你及时发现和解决问题。 2. **logstash.json文件**: - 这个文件包含了JSON格式的模板定义,JSON是一种轻量级的数据交换格式,易于...

    Newtonsoft.Json使用总结

    由于JSON.net的最新版本是基于.NET 3.5及以上版本编译的,因此直接在.NET 2.0中使用可能会遇到兼容性问题。幸运的是,通过一些额外的步骤可以解决这个问题。 - **下载源代码**:首先,从官方仓库或镜像站点下载JSON...

    My.Extensions.Localization.Json:JSON本地化资源

    标签 "json localization" 和 "LocalizationC#" 明确指出这个库关注的是C#中的本地化问题,特别是与JSON相关的部分。在.NET开发中,本地化通常涉及到根据用户的区域设置显示适当的文本、日期、时间和其他格式。C#...

    Newtonsoft.Json.6.0.5 最新版本 内含多种版本

    除此之外,Newtonsoft.Json还支持自定义序列化行为、忽略特定属性、处理日期格式、处理循环引用等问题。它也提供了一种方式来自定义JSON的命名规则,如字段的骆驼Case或PascalCase。对于复杂的数据结构,比如嵌套的...

    Newtonsoft.Json.dll

    这个DLL文件是James Newton-King 开发的Json.NET库的实现部分,提供了丰富的功能来序列化和反序列化JSON对象,使得.NET开发者能够方便地在C#、VB.NET等语言中与JSON数据交互。 Json.NET 是一个高性能、完全托管的 ...

    C#用json输出需要引用的dll【Newtonsoft.Json.dll】

    在C#编程中,当你需要处理JSON数据时,经常会用到第三方库Newtonsoft.Json,它是一个非常强大且广泛使用的库,由James Newton-King 开发。这个库的主要功能是将.NET对象转换为JSON字符串(序列化)以及将JSON字符串...

    package.json说明1

    `package.json`的基本结构包含以下部分: 1. **name**:项目名称,如`"name": "jnpf-admin"`,遵循npm的命名规则,通常以小写字母和连字符构成,应具有唯一性。 2. **version**:项目版本,遵循语义化版本(SemVer...

    json显示日期带T问题的解决方法.docx

    理解这些解决方案的关键在于理解JSON的默认日期格式以及如何与你使用的编程语言和库进行交互。对于Java开发者来说,了解如何在JSON序列化和反序列化过程中处理日期和时间非常重要,因为不正确的处理可能导致前端显示...

    关于Json-lib对日期型的转换解决方法

    标题 "关于Json-lib对日期型的转换解决方法" 涉及的是在Java开发中使用Json-lib库处理日期类型数据时遇到的问题以及解决方案。Json-lib是一个开源的Java库,用于将Java对象转换为JSON格式,反之亦然。在实际开发中,...

    JSONObject所必须的6个包和GSON

    捕获这种异常可以帮助开发者定位和解决JSON处理中的问题。 6. **org.json.JSONObject的相关辅助类** 包括`JSONStringer`和`JSONWriter`,它们提供了更高级别的API,帮助构造复杂的JSON结构,使得代码更加简洁和易...

    java转换json所需的所有包(完整版)

    Java API for JSON Processing (Json-P) 是Java EE规范的一部分,提供了一种标准的方式来处理JSON数据。`javax.json`包中的`JsonObjectBuilder`和`JsonParser`类是其核心,分别用于构建和解析JSON。 4. **Json-B...

    jsonstr

    10. 解决JSON解析和序列化过程中遇到的问题,如循环引用、日期对象的处理等。 由于没有具体的博文内容,以上内容是对给定信息的一般性解释和扩展,实际的学习点可能更具体地围绕博主在文章中分享的内容。

    json显示日期带T问题的解决方法

    这个"T"是ISO 8601中的分隔符,用于区分日期部分和时间部分。在JavaScript或Java中,当你将日期对象转换为JSON字符串时,这个"T"就会出现。在某些场景下,用户可能不希望在前端展示时看到这个"T"字符,因为这可能不...

    前端项目-json3.zip

    因此,json3库的出现解决了这些问题,确保在各种环境中都能稳定地处理JSON数据。 该压缩包“json3.zip”包含了一个名为“json3-master”的文件夹,这通常是源代码仓库的主分支。在“json3-master”中,你可能会找到...

    Adobe提供的Flex解析Json的ActionScript包

    总的来说,Adobe提供的Flex解析Json的ActionScript包是Flex开发者处理JSON数据不可或缺的一部分,它简化了数据交换的过程,使得Flex应用能够轻松地与使用JSON的后端服务进行交互。无论是在创建动态图表、数据驱动的...

Global site tag (gtag.js) - Google Analytics