欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java反射實(shí)現(xiàn)javabean轉(zhuǎn)json實(shí)例代碼

 更新時(shí)間:2013年12月18日 15:48:23   作者:  
基于java反射機(jī)制實(shí)現(xiàn)javabean轉(zhuǎn)json字符串實(shí)例,大家參考使用吧

ObjectToJson.java

復(fù)制代碼 代碼如下:

package com.ObjectToJson;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;

public class ObjectToJson {

 
 public  static String ObjListToJson(ArrayList<?> list){
  StringBuilder build=new StringBuilder();
  //迭代器
  Iterator<?> iterator=list.iterator();
  build.append("[");
  String separate="";
  while(iterator.hasNext()){
   build.append(separate);
   //object轉(zhuǎn)json字符串
   String str=ObjToJson(iterator.next());
   build.append(str);
   separate=",";
  }
  build.append("]");
  return build.toString();
 }

 @SuppressWarnings("unchecked")
 public  static String ObjToJson(Object obj){
  StringBuilder build=new StringBuilder();
  build.append("{");
  @SuppressWarnings("rawtypes")
  Class cla=null;
  try {
   //反射加載類
   cla=Class.forName(obj.getClass().getName());
  } catch (ClassNotFoundException e) {
   System.out.println(obj.getClass().toString().concat(" 未找到這個(gè)類"));
   e.printStackTrace();
   return null;
  }

  StringBuffer methodname=new StringBuffer();
  //獲取java類的變量
  Field[] fields=cla.getDeclaredFields();
  String separate="";
  for(Field temp:fields){
   build.append(separate);
   build.append("\"");
   build.append(temp.getName());
   build.append("\":");

   methodname.append("get");
   methodname.append(temp.getName().substring(0,1).toUpperCase());
   methodname.append(temp.getName().substring(1));

   build.append("\"");
   Method method=null;
   try {
    //獲取java的get方法
    method=cla.getMethod(methodname.toString());
   } catch (NoSuchMethodException | SecurityException e) {
    methodname.setLength(0);
    e.printStackTrace();
   }

   try {
    //執(zhí)行g(shù)et方法,獲取變量參數(shù)的直。
    build.append(method.invoke(obj));
   } catch (IllegalAccessException e) {
    e.printStackTrace();
   } catch (IllegalArgumentException e) {
    e.printStackTrace();
   } catch (InvocationTargetException e) {
    e.printStackTrace();
   }

   build.append("\"");
   methodname.setLength(0);
   separate=",";
  }

  build.append("}");
  return build.toString();
 }
}

 Test.java

 

復(fù)制代碼 代碼如下:

 package com.test;

import java.util.ArrayList;

import com.ObjectToJson.ObjectToJson;

public class Test {
  public static void main(String[] args){
   //數(shù)據(jù)構(gòu)建
   ArrayList<User> list=getlist();
   //數(shù)據(jù)轉(zhuǎn)換
   String listjson=ObjectToJson.ObjListToJson((ArrayList<?>)list);
   System.out.println("{\"data\":"+listjson+"}");
  }

  public static ArrayList<User> getlist(){
   User user00=new User();
   user00.setUserage("27");
   user00.setUsername("smart");
   user00.setUsersex("man");

   User user01=new User();
   user01.setUserage("27");
   user01.setUsername("smart00");
   user01.setUsersex("man");

   ArrayList<User> list=new ArrayList<User>();

   list.add(user00);
   list.add(user01);

   return list;
  }

}
 

 User.java

 

復(fù)制代碼 代碼如下:

 package com.test;

public class User {
 private String username;
 private String usersex;
 private String userage;

 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
 public String getUsersex() {
  return usersex;
 }
 public void setUsersex(String usersex) {
  this.usersex = usersex;
 }
 public String getUserage() {
  return userage;
 }
 public void setUserage(String userage) {
  this.userage = userage;
 }
 

}
 

 測(cè)試結(jié)果

 

復(fù)制代碼 代碼如下:

 {"data":[{"username":"smart","usersex":"man","userage":"27"},{"username":"smart00","usersex":"man","userage":"27"}]}
 

相關(guān)文章

  • Java堆&優(yōu)先級(jí)隊(duì)列示例講解(下)

    Java堆&優(yōu)先級(jí)隊(duì)列示例講解(下)

    這篇文章主要通過(guò)示例詳細(xì)為大家介紹Java中的堆以及優(yōu)先級(jí)隊(duì)列,文中的示例代碼講解詳細(xì),對(duì)我們了解java有一定幫助,需要的可以參考一下
    2022-03-03
  • Springboot簡(jiǎn)單熱部署實(shí)現(xiàn)步驟解析

    Springboot簡(jiǎn)單熱部署實(shí)現(xiàn)步驟解析

    這篇文章主要介紹了Springboot簡(jiǎn)單熱部署實(shí)現(xiàn)步驟解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Mybatis-Plus實(shí)現(xiàn)自動(dòng)生成代碼的操作步驟

    Mybatis-Plus實(shí)現(xiàn)自動(dòng)生成代碼的操作步驟

    AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過(guò) AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個(gè)模塊的代碼,極大的提升了開發(fā)效率,本文將給大家介紹Mybatis-Plus實(shí)現(xiàn)自動(dòng)生成代碼的操作步驟
    2023-10-10
  • Java實(shí)現(xiàn)按權(quán)重隨機(jī)數(shù)

    Java實(shí)現(xiàn)按權(quán)重隨機(jī)數(shù)

    這篇文章主要介紹了Java實(shí)現(xiàn)按權(quán)重隨機(jī)數(shù),本文給出了提出問(wèn)題、分析問(wèn)題、解決問(wèn)題三個(gè)步驟,需要的朋友可以參考下
    2015-04-04
  • Springboot基于BCrypt非對(duì)稱加密字符串的實(shí)現(xiàn)

    Springboot基于BCrypt非對(duì)稱加密字符串的實(shí)現(xiàn)

    本文主要介紹了Springboot基于BCrypt非對(duì)稱加密字符串的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • intellij idea中安裝、配置mybatis插件Free Mybatis plugin的教程詳解

    intellij idea中安裝、配置mybatis插件Free Mybatis plugin的教程詳解

    這篇文章主要介紹了intellij idea中安裝、配置mybatis插件Free Mybatis plugin的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot+Netty+WebSocket實(shí)現(xiàn)消息發(fā)送的示例代碼

    SpringBoot+Netty+WebSocket實(shí)現(xiàn)消息發(fā)送的示例代碼

    這篇文章主要介紹了SpringBoot+Netty+WebSocket實(shí)現(xiàn)消息發(fā)送的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 一文搞懂MyBatis一級(jí)緩存和二級(jí)緩存

    一文搞懂MyBatis一級(jí)緩存和二級(jí)緩存

    本文主要介紹了一文搞懂MyBatis一級(jí)緩存和二級(jí)緩存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • SpringBoot全局Controller返回值格式統(tǒng)一

    SpringBoot全局Controller返回值格式統(tǒng)一

    本文主要介紹了SpringBoot全局Controller返回值格式統(tǒng)一,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 關(guān)于IDEA 2020.3 多窗口視圖丟失的問(wèn)題

    關(guān)于IDEA 2020.3 多窗口視圖丟失的問(wèn)題

    這篇文章主要介紹了關(guān)于IDEA 2020.3 多窗口視圖丟失的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評(píng)論