将一个对象转为json 对象

定义实体:

package com.ziv.bean;import java.util.List;public class User {private Integer[] id;private String name;private List<UserDesc> userDescs;public void setId(Integer[] id) {this.id = id;}public Integer[] getId() {return id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<UserDesc> getUserDescs() {return userDescs;}public void setUserDescs(List<UserDesc> userDescs) {this.userDescs = userDescs;}public User(Integer[] id, String name, List<UserDesc> userDescs) {super();this.id = id;this.name = name;this.userDescs = userDescs;}
}
package com.ziv.bean;import java.util.List;public class UserDesc {private Integer id;private  String code;private String name;private String[] strings;private List<Opector> opectors;public UserDesc(Integer id, String code, String name, String[] strings,List<Opector> opectors) {super();this.id = id;this.code = code;this.name = name;this.strings = strings;this.opectors = opectors;}public String[] getStrings() {return strings;}public void setStrings(String[] strings) {this.strings = strings;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Opector> getOpectors() {return opectors;}public void setOpectors(List<Opector> opectors) {this.opectors = opectors;}
}
package com.ziv.bean;import java.util.Date;public class Opector {private Integer id;private String msg;private Date startDate;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Date getStartDate() {return startDate;}public void setStartDate(Date startDate) {this.startDate = startDate;}public Opector(Integer id, String msg, Date startDate) {super();this.id = id;this.msg = msg;this.startDate = startDate;}
}

核心类,处理对象

package com.ziv.util.json;import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Date;
import java.util.List;import org.junit.Test;import com.ziv.bean.Opector;
import com.ziv.bean.User;
import com.ziv.bean.UserDesc;public class JSON {/*      传入一个List集合转为json  */public static String getJson(List<?> obj){StringBuffer sb = new StringBuffer();sb.append("[");for (Object object : obj) {sb.append(jsons(object)).append(",");}sb.replace(sb.lastIndexOf(","), sb.length(), "");sb.append("]");return sb.toString();}/*     转入一个对象转为json   */public static String getJson(Object obj){return jsons(obj).toString();}/*  json转换,但是当字段的值为空时,不返回该值  */private static  StringBuffer jsons(Object obj) {if(obj == null) return null;StringBuffer sb = new StringBuffer().append("{");try {Object originalObj = obj;Class clazz = obj.getClass();Field[] fields = clazz.getDeclaredFields();String type = "";       /*  属性的类型   */String name = "";      /*  属性的名称   */for (int i = 0; i < fields.length; i++) {String[] split = fields[i].toString().split(" ");type = split[1].substring(split[1].lastIndexOf(".") + 1);name = split[2].substring(split[2].lastIndexOf(".") + 1);Method get = clazz.getMethod("get" + cap(name));if(type.equalsIgnoreCase("Integer[]") || type.equalsIgnoreCase("Int[]")){Integer[] value = (Integer[]) get.invoke(originalObj);if (value !=null) {sb.append("\""+name+"\": [");for (Integer integer : value) {sb.append(String.valueOf(integer)+",");}sb.replace(sb.lastIndexOf(","), sb.length(), "],");}} else if(type.equalsIgnoreCase("Integer") || type.equalsIgnoreCase("int")){Integer value = (Integer) get.invoke(originalObj);if(value != null){    sb.append("\""+name+"\":"+value+",");}} else if(type.equalsIgnoreCase("String")){String value = (String) get.invoke(originalObj);if(value != null){                     sb.append("\""+name+"\":\""+value+"\",");}} else if(type.equalsIgnoreCase("String[]")){String[] value = (String[]) get.invoke(originalObj);if(value != null){                     sb.append("\""+name+"\": [");for (String string : value) {sb.append("\"").append(String.valueOf(string)).append("\"").append(",");}sb.replace(sb.lastIndexOf(","), sb.length(), "],");}}else if(type.equalsIgnoreCase("Date")){Date value = (Date) get.invoke(originalObj);if(value != null){sb.append("\""+name+"\":"+value.getTime()+",");}}else if(type.equalsIgnoreCase("List")){List<?> arrays = (List<?>)get.invoke(originalObj);if(arrays != null){sb.append("\""+name+"\":[");for (int j = 0; j < arrays.size(); j++) {if(j == arrays.size() -1){sb.append(getJson(arrays.get(j))).append("],");}else{sb.append(getJson(arrays.get(j))).append(",");}}}}}} catch (Exception e) {e.printStackTrace();}sb.replace(sb.lastIndexOf(","), sb.length(), "").append("}");return sb;}/*   将字符串首字母变为大写 */private static String cap(String str) {return str.substring(0,1).toUpperCase() + str.substring(1);}
}

测试

package com.ziv.bean;import java.util.Arrays;
import java.util.Date;
import java.util.List;import javax.swing.JList;import com.ziv.util.json.JSON;public class Test {public static void main(String[] args) {List<Opector> asList = Arrays.asList(new Opector(100001, "登录", new Date()),new Opector(100011, null, new Date()),new Opector(10101, "退出", null));List<UserDesc> udDescs = Arrays.asList(new UserDesc(101,"OK","嘻哈哈",new String[]{"xiao","样"},asList),new UserDesc(102,"休息下来了","哟呵呵",new String[]{"普欧尼","^(* ̄(oo) ̄)^"},asList));User user = new User(new Integer[]{1,2,3}, "xx", udDescs);List<?> jList = Arrays.asList(new User(null, "xx", null),new User(new Integer[]{1,2,3}, "是的发送到", udDescs),new User(new Integer[]{1,2,3}, null, udDescs),new User(new Integer[]{1,2,3}, "阿斯蒂芬", udDescs));//        System.out.println(JSON.getJson(jList));System.out.println(JSON.getJson(user));}
}

json,反射实现对象转json相关推荐

  1. Java系列之:ObjectMapper实现对象转化为Json、集合转化为Json、Json转化为对象、Json转化为JsonNode、JsonNode转化为Json字符串

    Java系列之:ObjectMapper实现对象转化为Json.集合转化为Json.Json转化为对象.Json转化为JsonNode.JsonNode转化为Json字符串 一.创建类Dataset ...

  2. json与java反射_Java 对象的 Json 化与反 Json 化

    最近在家里修习 Java 这项技能,估计快点满技能点儿了,很开心.不过遇到了一个问题,困扰了我一阵子.问题是这样的,我要写 Android App,与服务器交互.大家都知道 Javascript 不知 ...

  3. 【Groovy】json 序列化 ( 类对象转为 json 字符串 | 使用 JsonBuilder 进行转换 | 使用 JsonOutput 进行转换 | 将 json 字符串格式化输出 )

    文章目录 一.Groovy 对象转为 json 字符串 ( 使用 JsonBuilder 进行转换 ) 二.使用 JsonOutput 将指定类型对象转为 json 字符串 三.将 json 字符串格 ...

  4. JSON,java对象转json

    服务器返回给异步对象的数据载体: 1.HTML 2.XML 3.JSON 一)什么是JSON (1)JSON(Java Script Object Notation(记号,标记))是一种轻量级的数据交 ...

  5. json java typeof_Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  6. Java自己写一个json转换器,对象转json,json转对象

    介绍 gitee https://gitee.com/jiangjinghong520/servlet/tree/master/ 在json包里面 有空再完善思路,最近没时间,都是临时想法临时写 功能 ...

  7. java对象转json格式化_Java对象转json JsonFormat注解

    写在前面,首先,我用的java转json序列化的工具是java开源的jackson. 今天在做后端接口的时候,发现获取的json对象中少了几个属性,因为其他的接口都能得到正确的json,所以很快就找到 ...

  8. js解析json字符串、对象与json之间的转换

    前言 在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键. js解析json字符串 // JSON字符串 'v ...

  9. json反射java对象_Jackson通过反射将Json转化为java对象

    Jackson的功能比较强大,我们这里主要使用Data Binding的方式,来看看如何使用反射将json转化为java bean,先加入如下依赖: Jackson 的核心模块由三部分组成. jack ...

最新文章

  1. 在hadoop上运行python_hadoop上运行python程序
  2. 如何在30前成为“富翁”?
  3. 电信系统方案 电信综合营帐系统
  4. [转] Bookmarklet(书签工具)编写指南
  5. Linux网络编程——黑马程序员笔记
  6. 人工智能AI实战100讲(二)-自动驾驶传感器之激光雷达(三)主流车厂激光雷达的选择及布局
  7. 怎么修改地磅服务器的修改记录,地磅无人值守系统软件怎么修改数据
  8. 谷歌推出TFGAN:开源的轻量级生成对抗网络库
  9. VS2013下使用QT和MFC的错误解决方案
  10. python超时处理_Python如何实现让一个函数超时退出?
  11. 解决问题 WebDriverException: Message: unknown error: cannot find Chrome binary
  12. python中str与bytes
  13. U盘加密软件测试自学,利用联想USB接口加密软件给你的U盘加密、设定访问权限...
  14. java学习代码01 范围:基本测试、标识符、数据类型、运算符、控制语句
  15. 【黑马程序员】-c函数
  16. Centos7.2修复yum
  17. 并发编程(三)---共享模型之管程
  18. 华为手机比较好用的三款推荐
  19. 帧中继网络与NBMA/P2MA
  20. Java 提供给第三方使用接口方法

热门文章

  1. Econometrics Homework (Lab Course: Chapters 2, 3, 4)
  2. 基于springboot的校园跑腿系统
  3. TextRank方法的优化——MMR(最大边界相关算法)
  4. 三极管: 互补输出电路
  5. Python第三方库
  6. 常见html的标签含义(2)
  7. SD-NOIP2016游记
  8. 什么叫克隆人_什么是克隆技术?
  9. 英国电信进行下一代SDN测试
  10. 关闭Windows XP系统Beep提示音