`
307622798
  • 浏览: 10965 次
社区版块
存档分类
最新评论

json

    博客分类:
  • Ajax
阅读更多
在Ajax中当使用服务器传递数据时,有三种方式:自定义数据格式,xml格式,json格式。
自定义格式在数据比较少时使用起来比较方便,xml格式的话我本人是比较推崇的,因为只需要传一个xml流到客户端,客户端可以直接将xml流生成一个DOM对象,JS处理dom对象也比较简单明了。而json格式的数据在JS处理时非常方便,代码看上去也简单易懂,唯一不好的是在服务器端拼接json格式时非常繁琐,要非常细心,否则就很容易出错。所以我就想是不是写一个方法让它帮我自动生成json字符串。而我只需要将数据传过去就可以得到一个字符串。


下面这个类的CreateByReflect()方法,只要你传一个List集合过去,和一个名字,它就会给你生成一个{"JsonName",[{},{}]}格式的字符串
public class CreateJSON {

public String createByReflect(List<?> obj, String JsonName) {
StringBuffer strBuff = new StringBuffer();
// 如果传过来的数据长度为0则表示没有数据传过来,直接返回一个{"JsonName":[]}
if (obj.size() == 0)
return "{\"" + JsonName + "\":[]}";
// 否则开始构建字符串
strBuff.append("{\"" + JsonName + "\":[");
for (int i = 0; i < obj.size(); i++) {
strBuff.append(createJson(obj.get(i)));
strBuff.append(",");
}
strBuff.deleteCharAt(strBuff.length() - 1);
strBuff.append("]}");

return strBuff.toString();
}

// 根据给定的实体类对象创建JSON对象
private String createJson(Object obj) {

StringBuffer strBuff = new StringBuffer();
strBuff.append("{");
// 得到该对象的类
Class<?> vo = obj.getClass();
// 得到该对象的所有的字段
Field[] fields = vo.getDeclaredFields();
String methodName = null;
String fieldName = null;
for (int i = 0; i < fields.length; i++) {
// 得到字段名
fieldName = fields[i].getName();
// 得到该字段的数据类型
Class<?> fieldType = fields[i].getType();
// 得到该字段的get方法的方法名
methodName = "get" + fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1);
Method method = null;
Object fieldValue = null;
try {
method = vo.getMethod(methodName, new Class[] {});
fieldValue = method.invoke(obj);
} catch (SecurityException e1) {
e1.printStackTrace();
} catch (NoSuchMethodException e1) {
e1.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}

// 将字段名加到字符串中去
strBuff.append("\"");
strBuff.append(fieldName);
strBuff.append("\":");
// 判断该字段的数据类型是不是Object类型,是对象类型的话,还得创建该对象的数据,即递归调用本方法
if (!fieldType.isPrimitive() && fieldType != String.class
&& fieldType != Integer.class && fieldType != Float.class
&& fieldType != Double.class && fieldType != Long.class
&& fieldType != Byte.class && fieldType != Short.class
&& fieldType != Boolean.class
&& fieldType != Character.class) {
if(fieldValue == null) {
strBuff.append("{}");
}else {
strBuff.append(this.createJson(fieldValue));
}
}
else {
strBuff.append("\"");
strBuff.append(fieldValue.toString());
strBuff.append("\"");
}
strBuff.append(",");
}
strBuff.deleteCharAt(strBuff.length() - 1);
strBuff.append("}");
return strBuff.toString();
}

}
分享到:
评论

相关推荐

    json paser 属于idea插件 用于解析json

    json paser 属于idea插件 用于解析json json paser 属于idea插件 用于解析json json paser 属于idea插件 用于解析json json paser 属于idea插件 用于解析json json paser 属于idea插件 用于解析json json paser 属于...

    最好用的c++json库 nlohmann json源代码

    最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json库 nlohmann json源代码最好用的c++json...

    MFC使用json11解析JSON

    json11::Json jsonObject = json11::Json::parse(jsonString); if (jsonObject.is_object()) { // 处理解析成功的对象 } else { // 处理解析错误 } ``` 一旦你有了JSON对象,可以访问其成员或进行修改。例如,...

    json3.js 【JS / JavaScript 中解析JSON的js包,JSON官方的JSON解析包】

    json3.js 【JS / JavaScript 中解析JSON的js包,JSON官方的JSON解析包】。JavaScript中解析JSON的js包,页面中引入json3.js,即可使用。 使用方法:JSON.parse(str), JSON.stringify(obj) 更多详情请参考博文: ...

    java json api,json api

    Java JSON API是Java平台上的库,提供了处理JSON的能力,包括解析JSON字符串、生成JSON对象以及进行JSON与Java对象之间的转换。 在Java中,有多种实现JSON API的库,如Jackson、Gson、org.json和json-lib等。本篇...

    json转换jsonschema

    而JSON Schema则是一个JSON格式的规范,用于定义JSON数据的结构和限制,类似于XML Schema,它为JSON数据提供了验证规则,确保数据的准确性和一致性。 在JavaScript开发中,有时我们需要将JSON对象转换为JSON Schema...

    json-c 一个用于c语言的json解析库,很强大

    在这个例子中,我们首先使用`json_tokener_parse`解析JSON字符串,然后通过`json_object_get_string`和`json_object_get_int`获取JSON对象中的数据,最后使用`json_object_put`释放内存。这就是`json-c`库基本的使用...

    JSON net.sf.json jar包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。它易于人阅读和编写,同时也易于机器解析和生成。`net.sf.json`是开源项目Apache软件基金会下的一个...

    json net.sf.json

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传输数据。它以文本形式存储和传递数据,易于人阅读和编写,同时也易于机器解析和生成。`net.sf.json`是开源Java库,它...

    json数据格式化(editplus 格式化 Json 工具 )

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。它基于JavaScript的一个子集,具有易读易写的特点,同时也易于机器解析和生成。JSON格式通常由键值对组成,键...

    json数据展示插件,jsonview.js

    jsonview是chrome浏览器的一个插件,用来在浏览器中查看json数据。比如你在浏览器中可以查看从服务器端传回来的json数据,这些数据可能没有经过格式化的,也或者是经过了unicode编码,没有缩进,没有换行等等,造成...

    C# json格式解析,Json格式字符串与C#对象相互转换,类库+使用案例,注释详细

    C# json格式转换,Json格式字符串与C#对象相互转换,类库和测试demo 写了一个json与C#对象相互装换的类库,直接调用就行,有测试案例,代码注释非常详细 部分方法: /// 将Json字符串解析为C#中的对象 /// Json格式...

    JAVA-JSON工具转换类

    可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`(将JSON字符串解析为Java对象)、`convertToMap()`(将JSON字符串转换为Map)以及`convertToList()`(将JSON字符串转换为List)等。...

    json for PHP4.0

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在PHP中,JSON常用于与前端交互,传输数据。PHP 4.0版本虽然相对较旧,但仍然可以处理JSON数据,只是...

    JSON文件查看器,用于json文件的查看

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛应用于Web服务与客户端之间的数据传输。它易于人阅读和编写,同时也易于机器解析和生成。JSON文件通常以.js或.json为扩展名,其数据结构主要...

    经典ASP读取JSON字符串/生成JSON对象,数组对象等。

    这篇关于“经典ASP读取JSON字符串/生成JSON对象,数组对象等”的知识将详细介绍如何在ASP环境中处理JSON数据。 1. **JSON对象与数组的结构**: JSON对象以大括号{}表示,键值对之间用逗号分隔。键必须是字符串,用...

    JsonSQL:用SQL语句解析JSON文件

    **JsonSQL: SQL语句解析JSON文件** 在大数据处理和Web应用中,JSON(JavaScript Object Notation)格式已经成为数据交换的常见格式。然而,对于习惯使用SQL查询关系型数据库的人来说,处理JSON数据可能会觉得不太...

    PB解析json,解析JSON案例,解析jsondemo

    标题中的“PB解析json,解析JSON案例,解析jsondemo”表明了本文主要关注的是PowerBuilder(简称PB)如何处理JSON数据。在现代软件开发中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,...

    HTML版JsonViewer

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在Web开发中,JSON被广泛用于前后端数据传输,因为它简洁、直观且易于...

    Newtonsoft.Json.dll

    **Newtonsoft.Json.dll详解** `Newtonsoft.Json.dll`是一个由James Newton-King 开发的流行的JSON库,专门用于.NET框架的开发。它在Unity引擎中广泛使用,因为Unity支持C#编程,而`Newtonsoft.Json`库提供了强大的...

Global site tag (gtag.js) - Google Analytics