因为需要对客户端提交至服务端的日期进行处理,对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方法转换为日期,不知有哪位高人能指点下.
分享到:
相关推荐
这些库的结合使用,可以构建起一套完整的JSON处理解决方案,无论是简单的数据交换,还是复杂的业务逻辑,都可以借助这些工具高效地完成。不过在实际项目中,由于Fastjson的高性能和易用性,现在更多开发者倾向于使用...
"Newtonsoft.Json-for-Unity-master"是针对Unity引擎优化的版本,解决了Unity原生不支持Newtonsoft.Json的一些问题,如Unity的IL2CPP脚本后端对部分.NET特性不兼容的问题。此版本特别适合在Unity项目中使用,能够...
这个压缩包提供的"Kingdee.BOS.WebApi.Client-升级引用的Json版本,解决冲突问题"文件很可能包含了一个修改过的"Kingdee.BOS.WebApi.Client.dll",其中的Newtonsoft.Json依赖已经被更新到与项目其他部分兼容的版本。...
5. 社区活跃:由于其开源和广泛的使用,Newtonsoft.Json拥有庞大的用户社区,提供了丰富的示例和问题解决方案。 四、应用场景 1. Web API通信:在ASP.NET Web API项目中,Newtonsoft.Json通常作为默认的JSON序列化...
它广泛应用于日志分析、实时监控、信息检索等多个领域,其灵活性和高性能使其成为现代大数据解决方案的重要组成部分。 `accounts.json`是Elasticsearch中用于演示和测试的一个示例数据集,通常包含各种用户账户信息...
- **错误防范**:如果Logstash接收到的数据不符合模板定义,它会抛出错误,帮助你及时发现和解决问题。 2. **logstash.json文件**: - 这个文件包含了JSON格式的模板定义,JSON是一种轻量级的数据交换格式,易于...
由于JSON.net的最新版本是基于.NET 3.5及以上版本编译的,因此直接在.NET 2.0中使用可能会遇到兼容性问题。幸运的是,通过一些额外的步骤可以解决这个问题。 - **下载源代码**:首先,从官方仓库或镜像站点下载JSON...
标签 "json localization" 和 "LocalizationC#" 明确指出这个库关注的是C#中的本地化问题,特别是与JSON相关的部分。在.NET开发中,本地化通常涉及到根据用户的区域设置显示适当的文本、日期、时间和其他格式。C#...
除此之外,Newtonsoft.Json还支持自定义序列化行为、忽略特定属性、处理日期格式、处理循环引用等问题。它也提供了一种方式来自定义JSON的命名规则,如字段的骆驼Case或PascalCase。对于复杂的数据结构,比如嵌套的...
这个DLL文件是James Newton-King 开发的Json.NET库的实现部分,提供了丰富的功能来序列化和反序列化JSON对象,使得.NET开发者能够方便地在C#、VB.NET等语言中与JSON数据交互。 Json.NET 是一个高性能、完全托管的 ...
在C#编程中,当你需要处理JSON数据时,经常会用到第三方库Newtonsoft.Json,它是一个非常强大且广泛使用的库,由James Newton-King 开发。这个库的主要功能是将.NET对象转换为JSON字符串(序列化)以及将JSON字符串...
`package.json`的基本结构包含以下部分: 1. **name**:项目名称,如`"name": "jnpf-admin"`,遵循npm的命名规则,通常以小写字母和连字符构成,应具有唯一性。 2. **version**:项目版本,遵循语义化版本(SemVer...
理解这些解决方案的关键在于理解JSON的默认日期格式以及如何与你使用的编程语言和库进行交互。对于Java开发者来说,了解如何在JSON序列化和反序列化过程中处理日期和时间非常重要,因为不正确的处理可能导致前端显示...
标题 "关于Json-lib对日期型的转换解决方法" 涉及的是在Java开发中使用Json-lib库处理日期类型数据时遇到的问题以及解决方案。Json-lib是一个开源的Java库,用于将Java对象转换为JSON格式,反之亦然。在实际开发中,...
捕获这种异常可以帮助开发者定位和解决JSON处理中的问题。 6. **org.json.JSONObject的相关辅助类** 包括`JSONStringer`和`JSONWriter`,它们提供了更高级别的API,帮助构造复杂的JSON结构,使得代码更加简洁和易...
Java API for JSON Processing (Json-P) 是Java EE规范的一部分,提供了一种标准的方式来处理JSON数据。`javax.json`包中的`JsonObjectBuilder`和`JsonParser`类是其核心,分别用于构建和解析JSON。 4. **Json-B...
10. 解决JSON解析和序列化过程中遇到的问题,如循环引用、日期对象的处理等。 由于没有具体的博文内容,以上内容是对给定信息的一般性解释和扩展,实际的学习点可能更具体地围绕博主在文章中分享的内容。
这个"T"是ISO 8601中的分隔符,用于区分日期部分和时间部分。在JavaScript或Java中,当你将日期对象转换为JSON字符串时,这个"T"就会出现。在某些场景下,用户可能不希望在前端展示时看到这个"T"字符,因为这可能不...
因此,json3库的出现解决了这些问题,确保在各种环境中都能稳定地处理JSON数据。 该压缩包“json3.zip”包含了一个名为“json3-master”的文件夹,这通常是源代码仓库的主分支。在“json3-master”中,你可能会找到...
总的来说,Adobe提供的Flex解析Json的ActionScript包是Flex开发者处理JSON数据不可或缺的一部分,它简化了数据交换的过程,使得Flex应用能够轻松地与使用JSON的后端服务进行交互。无论是在创建动态图表、数据驱动的...