- 浏览: 251910 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
无它唯勤:
...
Spring Ioc AOP -
dubaopeng:
挺好的,拿去改改!
java 解析csv文件 -
灵程大哥:
先试一下,看行不行
java 判断文本文件编码 -
pxjianke:
谢谢兄弟。我现在在测试插入千万级数据。做测试。这个太有用了。
Oracle 高速批量速插入数据 解决方案
import java.lang.reflect.*;
import java.util.*;
/** *//**
* @author 惠万鹏
* @time 2008-06-13
* @version 1.0
*/
public class JSON {
/** *//**
* <p>
* 本方法用利用反射机制根据对像的域名获得PO的getter方法名
* </p>
*
* @param o
* :po对像
* @return getter方法名
*/
private synchronized static String[][] gFMs(Object o) {
String[][] fms = null;
if (o != null)
{
Field flist[] = o.getClass().getDeclaredFields();
fms = new String[flist.length][2];
for (int i = 0; i < flist.length; i++)
{
fms[i] = JSON.assemblyFM(flist[i].toString());
}
}
return fms;
}
/** *//**
* <p>
* 根据域名组装域名和方法名
* </p>
*
* @param sfield
* @return
*/
private synchronized static String[] assemblyFM(String sfield)
{
String[] fm = new String[2];
int len = sfield.length();
int pointAt = sfield.lastIndexOf(".") + 1;
fm[0] = sfield.substring(pointAt, len);
fm[1] = String.valueOf(fm[0].charAt(0)).toUpperCase();
if (fm[0].length() > 1)
{
fm[1] += fm[0].substring(1, fm[0].length());
}
if (sfield.indexOf("boolean") > 0)
{
fm[1] = "is" + fm[1];
}
else
{
fm[1] = "get" + fm[1];
}
fm[1] += "()";
return fm;
}
/** *//**
* <p>po的方法里是否含有域的getter方法</p>
* @param fms
* @param method
* @return
*/
private static String getFN(String[][] fms, String method)
{
if(fms != null)
{
int len = method.length();
int pointAt = method.lastIndexOf(".") + 1;
String methodName = method.substring(pointAt, len);
for(int i = 0; i < fms.length; i++)
{
if(methodName.equals(fms[i][1]))
{
return fms[i][0];
}
}
}
return "";
}
/** *//**
* <p>得到单个po的json info</p>
* @param o
* @return
*/
private static String getJsonInfo(Object o) {
StringBuffer jsonInfo = new StringBuffer("{");
String[][] fms = JSON.gFMs(o);
if(fms != null){
String fn = "";
String fv = "";
Method[] methods = o.getClass().getDeclaredMethods();
for(int i = 0; i < methods.length; i++)
{
fn = JSON.getFN(fms,methods[i].toString());
if(fn != null && !fn.equals(""))
{
jsonInfo.append("\"");
jsonInfo.append(fn);
jsonInfo.append("\"");
jsonInfo.append(":");
jsonInfo.append("\"");
try
{
fv = (String) methods[i].invoke(o, (Object[])null);
fv = fv == null ? "" : fv;
jsonInfo.append(fv);
}
catch(Exception e)
{
jsonInfo.append("");
}
jsonInfo.append("\",");
}
}
}
int len = jsonInfo.length();
String strEnd = jsonInfo.substring(len - 1, len);
if(strEnd != null && strEnd.equals(","))
{
jsonInfo.delete(len - 1, len);
}
jsonInfo.append("}");
return jsonInfo.toString();
}
/** *//**
* <p>得到一个集合的json信息</p>
* @param list
* @return
*/
public static String getJsonInfos(List<Object> list){
StringBuffer infos = new StringBuffer();
infos.append("[");
if(list != null)
{
Iterator<Object> itObj = list.iterator();
while(itObj.hasNext())
{
infos.append(JSON.getJsonInfo(itObj.next()));
if(itObj.hasNext())
{
infos.append(",");
}
}
}
infos.append("]");
return infos.toString();
}
public static void main(String[] args) {
List<Object> list = new ArrayList<Object>();
PersonPO po = new PersonPO();
po.setAge("25");
po.setName("惠万鹏");
po.setSex("男");
list.add(po);
po = new PersonPO();
po.setAge("27");
po.setName("惠帆");
po.setSex("女");
list.add(po);
System.out.println(JSON.getJsonInfos(list));
}
}
import java.util.*;
/** *//**
* @author 惠万鹏
* @time 2008-06-13
* @version 1.0
*/
public class JSON {
/** *//**
* <p>
* 本方法用利用反射机制根据对像的域名获得PO的getter方法名
* </p>
*
* @param o
* :po对像
* @return getter方法名
*/
private synchronized static String[][] gFMs(Object o) {
String[][] fms = null;
if (o != null)
{
Field flist[] = o.getClass().getDeclaredFields();
fms = new String[flist.length][2];
for (int i = 0; i < flist.length; i++)
{
fms[i] = JSON.assemblyFM(flist[i].toString());
}
}
return fms;
}
/** *//**
* <p>
* 根据域名组装域名和方法名
* </p>
*
* @param sfield
* @return
*/
private synchronized static String[] assemblyFM(String sfield)
{
String[] fm = new String[2];
int len = sfield.length();
int pointAt = sfield.lastIndexOf(".") + 1;
fm[0] = sfield.substring(pointAt, len);
fm[1] = String.valueOf(fm[0].charAt(0)).toUpperCase();
if (fm[0].length() > 1)
{
fm[1] += fm[0].substring(1, fm[0].length());
}
if (sfield.indexOf("boolean") > 0)
{
fm[1] = "is" + fm[1];
}
else
{
fm[1] = "get" + fm[1];
}
fm[1] += "()";
return fm;
}
/** *//**
* <p>po的方法里是否含有域的getter方法</p>
* @param fms
* @param method
* @return
*/
private static String getFN(String[][] fms, String method)
{
if(fms != null)
{
int len = method.length();
int pointAt = method.lastIndexOf(".") + 1;
String methodName = method.substring(pointAt, len);
for(int i = 0; i < fms.length; i++)
{
if(methodName.equals(fms[i][1]))
{
return fms[i][0];
}
}
}
return "";
}
/** *//**
* <p>得到单个po的json info</p>
* @param o
* @return
*/
private static String getJsonInfo(Object o) {
StringBuffer jsonInfo = new StringBuffer("{");
String[][] fms = JSON.gFMs(o);
if(fms != null){
String fn = "";
String fv = "";
Method[] methods = o.getClass().getDeclaredMethods();
for(int i = 0; i < methods.length; i++)
{
fn = JSON.getFN(fms,methods[i].toString());
if(fn != null && !fn.equals(""))
{
jsonInfo.append("\"");
jsonInfo.append(fn);
jsonInfo.append("\"");
jsonInfo.append(":");
jsonInfo.append("\"");
try
{
fv = (String) methods[i].invoke(o, (Object[])null);
fv = fv == null ? "" : fv;
jsonInfo.append(fv);
}
catch(Exception e)
{
jsonInfo.append("");
}
jsonInfo.append("\",");
}
}
}
int len = jsonInfo.length();
String strEnd = jsonInfo.substring(len - 1, len);
if(strEnd != null && strEnd.equals(","))
{
jsonInfo.delete(len - 1, len);
}
jsonInfo.append("}");
return jsonInfo.toString();
}
/** *//**
* <p>得到一个集合的json信息</p>
* @param list
* @return
*/
public static String getJsonInfos(List<Object> list){
StringBuffer infos = new StringBuffer();
infos.append("[");
if(list != null)
{
Iterator<Object> itObj = list.iterator();
while(itObj.hasNext())
{
infos.append(JSON.getJsonInfo(itObj.next()));
if(itObj.hasNext())
{
infos.append(",");
}
}
}
infos.append("]");
return infos.toString();
}
public static void main(String[] args) {
List<Object> list = new ArrayList<Object>();
PersonPO po = new PersonPO();
po.setAge("25");
po.setName("惠万鹏");
po.setSex("男");
list.add(po);
po = new PersonPO();
po.setAge("27");
po.setName("惠帆");
po.setSex("女");
list.add(po);
System.out.println(JSON.getJsonInfos(list));
}
}
发表评论
-
一刻钟精通正则表达式(转)
2007-11-07 11:23 872想必很多人都对正则表达式都头疼。今天,我以我的 ... -
Map、ArrayList 的遍历
2007-11-08 12:50 825public static void main(String[ ... -
Hibernate 连接池
2007-11-16 16:50 723<session-factory> < ... -
Hibernate检索对象的方式
2007-11-23 11:23 604Hibernate检索对象的方式 ... -
再温java jkd 环境变量设置
2007-12-04 15:16 879JAVA_HOME: C:\Program Files ... -
JAVA之路(转)
2007-12-04 18:12 624很多网友问我学习Java有 ... -
JMail
2007-12-05 10:42 872一.创建html格式的邮件 ... -
JAVA 检测网络是否为连通状态 ping
2007-12-07 19:27 2507要用java检测网络资源是否可用,我们可以采用以下两种方法: ... -
JMail 异常: java.lang.NoClassDefFoundError: javax/activation/DataSource
2007-12-11 16:56 2788今天开发邮件系统,发送程序能在main函数中顺利运行. ... -
JAVA 常用正则表达试
2007-12-11 21:21 803"^\d+$" //非负整数(正整数 + ... -
Linux - Tomcat
2007-12-14 18:36 7561.使用ps -ax | grep tomcat可以查询出内存 ... -
有返回值 存储过程 的 调用
2007-12-18 20:03 724有返回值的存储过程的调用方法如下: public class ... -
ECLIPS 经典 快键
2007-12-21 11:42 760Ctrl+1 快速修复(最经典的快捷键,就不用多说了) ... -
eclips 恢复 误删文件
2007-12-23 13:25 775今天,把我差点气死了,一不小心误删了很多重要文件. 后来才到网 ... -
JSP 统计在线人数
2007-12-24 10:39 730package com.test;import javax. ... -
The Software Engineer
2007-12-24 13:40 595http://siyn.iteye.com/ http://w ... -
Summarization of web project
2007-12-27 09:37 639开始一个web项目前应该注意一些什么?就自己的开发 ... -
正则表达式--2
2008-01-02 16:19 623正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总 ... -
java 正则表达式 长期总结
2008-01-03 18:46 730匹配文件后缀名:Pattern.matches("^ ... -
Test
2008-01-07 16:08 759package com.ed.cnc.servletListe ...
相关推荐
在“实体类反射非空赋值,AjaxJson工具类”这个主题中,我们将探讨如何使用反射来安全地为实体类的属性赋值,并结合Ajax与JSON进行数据的转换和交互。 首先,让我们深入了解反射的概念。Java反射API提供了Class类,...
在描述中提到的`AjaxJson.java`文件,就是这样一个实体类,它的设计目的是为了简化后端接口的返回数据封装,使得前端可以直接理解并处理这些数据。 `AjaxJson.java`的可能实现会如下所示: ```java public class ...
实践是最好的老师,尝试创建自己的实例,不断调试和优化,这样你会更快地掌握 AjaxJson 的应用。 总的来说,AjaxJson 结合了 AJAX 的异步特性与 JSON 的数据交换优势,使得网页可以更加动态和响应式。对于初学者来...
通过理解并熟练掌握AJAX的异步通信机制以及JSON的数据交换格式,开发者能够构建出更加高效、流畅的Web应用。在实际开发中,还需要考虑错误处理、安全性、性能优化等多方面因素,确保系统的稳定性和可靠性。
ajax json 遍历json数组,json的说明文档,json操作说明
以下是关于"ajax + json 练习"的相关知识点的详细说明: 1. **Ajax基础**: - **异步通信**:Ajax的核心特性就是异步,它通过JavaScript的XMLHttpRequest对象与服务器进行通信,用户可以继续浏览网页而不会被中断...
本教程主要讲解如何使用Java将对象转化为JSON,并结合AjaxJson进行数据交换。 首先,我们需要引入相关的库,如标题所示,"java对象转Json AjaxJson数据交换"涉及到的几个jar包可能包括Jackson、Gson、Fastjson等...
JQuery AJAX 和 JSON 是在 Web 开发中处理异步数据传输和数据格式化的重要工具。本文将深入探讨这两个概念以及它们在实际应用中的使用方法。 首先,JQuery 的 AJAX(Asynchronous JavaScript and XML)功能允许...
本篇文章将深入探讨在Ajax中如何使用JSON来传输数据,以及涉及到的相关工具和源码。 首先,让我们理解JSON的基本概念。JSON是一种基于JavaScript语法的数据表示方式,它可以表示数组、对象、数值、字符串等基本数据...
在Struts2中,我们可以利用Ajax和JSON来实现数据的异步交互。 **一、引入所需库** 首先,为了在Struts2中使用Ajax和JSON,我们需要引入以下库: 1. Struts2的核心库:`struts2-core.jar` 2. Struts2的JSON插件:`...
现在,我们将深入探讨AJAXJSON的实现。 首先,理解AJAX的基本工作原理是至关重要的。AJAX的核心是XMLHttpRequest对象,这是一个内置在浏览器中的对象,它可以异步地向服务器发送请求并接收响应。创建一个...
JSON(JavaScript Object Notation)是轻量级的数据交换格式,因其易于人阅读和编写,同时也易于机器解析和生成,成为Ajax通信中常用的数据传输格式。在Java环境中,为了实现Ajax与JSON的功能,需要引入特定的jar...
Spring MVC、Ajax 和 JSON 是现代Web开发中的关键技术,它们共同构建了高效、动态的用户界面。下面将详细解释这三个技术及其在实际应用中的结合。 **Spring MVC** Spring MVC 是 Spring 框架的一部分,用于构建基于...
$.ajax json 数据传递方法 $.ajax json 数据传递方法是使用 jQuery 库实现的异步数据传递方法,通过将 JSON 数据封装在 $.ajax 对象中,并将其作为参数传递给服务器端脚本,以实现客户端和服务器端之间的数据交互。...
在处理Ajax返回的JSON(JavaScript Object Notation)数据时,可能会遇到一些问题,尤其是当JSON数据中包含换行符时。本文将深入探讨这个问题,以及如何正确地处理这种情况。 首先,JSON是一种轻量级的数据交换格式...
在IT行业中,Ajax(Asynchronous JavaScript and XML)与Json(JavaScript Object Notation)是Web开发中的重要技术,尤其在创建动态、交互性丰富的网页应用时不可或缺。本视频教程"一头扎进Ajax&Json视频教程第一讲...
这是一个典型的前后端交互场景,涉及到的技术栈包括Maven(项目管理工具)、Ajax(异步JavaScript和XML)以及JSON(JavaScript Object Notation,一种轻量级的数据交换格式)。现在,我们来详细探讨这些知识点。 **...
ajax json 应用 无刷新 ajax json 应用 无刷新 ajax json 应用 无刷新
【标题】"ZTree+Struts2+ajax+json实现checkbox权限树"涉及的技术栈主要集中在前端的ZTree,后端的Struts2框架,以及数据交互中的Ajax和JSON。这个项目的核心目标是构建一个可复选的权限树形结构,用户通过勾选节点...
**Ajax与JSON详解** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下,能够更新部分网页的技术。它的核心是JavaScript,通过XMLHttpRequest对象与服务器进行异步数据交互,从而实现网页...