文档章节

将JAVA对象转换成JSON字符串

开源中国-不入流码农
 开源中国-不入流码农
发布于 2016/03/22 16:33
字数 503
阅读 184
收藏 0

[java] view plain copy

  1. package com.jetsum.util;  

  2.   

  3. import java.io.StringReader;  

  4. import java.lang.reflect.Field;  

  5. import java.util.ArrayList;  

  6. import java.util.List;  

  7. import java.util.Map;  

  8. import java.util.Set;  

  9.   

  10. import antlr.RecognitionException;  

  11. import antlr.TokenStreamException;  

  12.   

  13. import com.sdicons.json.mapper.JSONMapper;  

  14. import com.sdicons.json.mapper.MapperException;  

  15. import com.sdicons.json.model.JSONArray;  

  16. import com.sdicons.json.model.JSONValue;  

  17. import com.sdicons.json.parser.JSONParser;  

  18.   

  19. public class JsonUtil {  

  20.   

  21.     /** 

  22.      * JAVA对象转换成JSON字符串 

  23.      * @param obj 

  24.      * @return  

  25.      * @throws MapperException 

  26.      */   

  27.     public static String objectToJsonStr(Object obj) throws MapperException{  

  28.         JSONValue jsonValue = JSONMapper.toJSON(obj);    

  29.         String jsonStr = jsonValue.render(false);  

  30.         return jsonStr;  

  31.     }  

  32.       

  33.     /** 

  34.      * 重载objectToJsonStr方法 

  35.      * @param obj 需要转换的JAVA对象 

  36.      * @param format 是否格式化 

  37.      * @return 

  38.      * @throws MapperException 

  39.      */  

  40.     public static String objectToJsonStr(Object obj,boolean format) throws MapperException{  

  41.         JSONValue jsonValue = JSONMapper.toJSON(obj);    

  42.         String jsonStr = jsonValue.render(format);  

  43.         return jsonStr;  

  44.     }     

  45.       

  46.     /** 

  47.      * JSON字符串转换成JAVA对象 

  48.      * @param jsonStr 

  49.      * @param cla 

  50.      * @return 

  51.      * @throws MapperException 

  52.      * @throws TokenStreamException 

  53.      * @throws RecognitionException 

  54.      */  

  55.     @SuppressWarnings({ "rawtypes""unchecked" })  

  56.     public static Object jsonStrToObject(String jsonStr,Class<?> cla) throws MapperException, TokenStreamException, RecognitionException{  

  57.         Object obj = null;  

  58.         try{  

  59.             JSONParser parser = new JSONParser(new StringReader(jsonStr));      

  60.             JSONValue jsonValue = parser.nextValue();             

  61.             if(jsonValue instanceof com.sdicons.json.model.JSONArray){  

  62.                 List list = new ArrayList();  

  63.                 JSONArray jsonArray = (JSONArray) jsonValue;  

  64.                 for(int i=0;i<jsonArray.size();i++){  

  65.                     JSONValue jsonObj = jsonArray.get(i);  

  66.                     Object javaObj = JSONMapper.toJava(jsonObj,cla);   

  67.                     list.add(javaObj);  

  68.                 }  

  69.                 obj = list;  

  70.             }else if(jsonValue instanceof com.sdicons.json.model.JSONObject){  

  71.                 obj = JSONMapper.toJava(jsonValue,cla);   

  72.             }else{  

  73.                 obj = jsonValue;  

  74.             }  

  75.         }catch(Exception e){  

  76.             e.printStackTrace();  

  77.         }  

  78.         return obj;   

  79.     }  

  80.       

  81.     /** 

  82.      * 将JAVA对象转换成JSON字符串 

  83.      * @param obj 

  84.      * @return 

  85.      * @throws IllegalArgumentException 

  86.      * @throws IllegalAccessException 

  87.      */  

  88.     @SuppressWarnings("rawtypes")  

  89.     public static String simpleObjectToJsonStr(Object obj,List<Class> claList) throws IllegalArgumentException, IllegalAccessException{  

  90.         if(obj==null){  

  91.             return "null";  

  92.         }  

  93.         String jsonStr = "{";  

  94.         Class<?> cla = obj.getClass();  

  95.         Field fields[] = cla.getDeclaredFields();  

  96.         for (Field field : fields) {  

  97.             field.setAccessible(true);  

  98.             if(field.getType() == long.class){  

  99.                 jsonStr += "\""+field.getName()+"\":"+field.getLong(obj)+",";  

  100.             }else if(field.getType() == double.class){  

  101.                 jsonStr += "\""+field.getName()+"\":"+field.getDouble(obj)+",";  

  102.             }else if(field.getType() == float.class){  

  103.                 jsonStr += "\""+field.getName()+"\":"+field.getFloat(obj)+",";  

  104.             }else if(field.getType() == int.class){  

  105.                 jsonStr += "\""+field.getName()+"\":"+field.getInt(obj)+",";  

  106.             }else if(field.getType() == boolean.class){  

  107.                 jsonStr += "\""+field.getName()+"\":"+field.getBoolean(obj)+",";  

  108.             }else if(field.getType() == Integer.class||field.getType() == Boolean.class  

  109.                     ||field.getType() == Double.class||field.getType() == Float.class                     

  110.                     ||field.getType() == Long.class){                 

  111.                 jsonStr += "\""+field.getName()+"\":"+field.get(obj)+",";  

  112.             }else if(field.getType() == String.class){  

  113.                 jsonStr += "\""+field.getName()+"\":\""+field.get(obj)+"\",";  

  114.             }else if(field.getType() == List.class){  

  115.                 String value = simpleListToJsonStr((List<?>)field.get(obj),claList);  

  116.                 jsonStr += "\""+field.getName()+"\":"+value+",";                  

  117.             }else{        

  118.                 if(claList!=null&&claList.size()!=0&&claList.contains(field.getType())){  

  119.                     String value = simpleObjectToJsonStr(field.get(obj),claList);  

  120.                     jsonStr += "\""+field.getName()+"\":"+value+",";                      

  121.                 }else{  

  122.                     jsonStr += "\""+field.getName()+"\":null,";  

  123.                 }  

  124.             }  

  125.         }  

  126.         jsonStr = jsonStr.substring(0,jsonStr.length()-1);  

  127.         jsonStr += "}";  

  128.             return jsonStr;       

  129.     }  

  130.       

  131.     /** 

  132.      * 将JAVA的LIST转换成JSON字符串 

  133.      * @param list 

  134.      * @return 

  135.      * @throws IllegalArgumentException 

  136.      * @throws IllegalAccessException 

  137.      */  

  138.     @SuppressWarnings("rawtypes")  

  139.     public static String simpleListToJsonStr(List<?> list,List<Class> claList) throws IllegalArgumentException, IllegalAccessException{  

  140.         if(list==null||list.size()==0){  

  141.             return "[]";  

  142.         }  

  143.         String jsonStr = "[";  

  144.         for (Object object : list) {  

  145.             jsonStr += simpleObjectToJsonStr(object,claList)+",";  

  146.         }  

  147.         jsonStr = jsonStr.substring(0,jsonStr.length()-1);  

  148.         jsonStr += "]";       

  149.         return jsonStr;  

  150.     }     

  151.       

  152.     /** 

  153.      * 将JAVA的MAP转换成JSON字符串, 

  154.      * 只转换第一层数据 

  155.      * @param map 

  156.      * @return 

  157.      */  

  158.     public static String simpleMapToJsonStr(Map<?,?> map){  

  159.         if(map==null||map.isEmpty()){  

  160.             return "null";  

  161.         }  

  162.         String jsonStr = "{";  

  163.         Set<?> keySet = map.keySet();  

  164.         for (Object key : keySet) {  

  165.             jsonStr += "\""+key+"\":\""+map.get(key)+"\",";       

  166.         }  

  167.         jsonStr = jsonStr.substring(0,jsonStr.length()-1);  

  168.         jsonStr += "}";  

  169.         return jsonStr;  

  170.     }  

  171. }


本文转载自:

开源中国-不入流码农
粉丝 2
博文 36
码字总数 3897
作品 0
杭州
程序员
私信 提问
JSON-lib框架,转换JSON、XML

Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象。 一、 准备工作 1、 首先要去官方...

五大三粗
2015/11/03
157
0
JSON-lib框架,转换JSON、XML不再困难

JSON-lib框架,转换JSON、XML不再困难 Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对...

DavidBao
2015/05/01
154
0
房产证样本 2018年江苏不动产权证样本 重庆市房产证

1.简单的解析json字符串 首先将json字符串转换为json对象,然后再解析json对象,过程如下。 JSONObject jsonObject = JSONObject.fromObject(jsonStr); 2.将json字符串转换为java对象 同样先...

json大师
2018/08/25
0
0
qmikjson最高效的java json 协议转换 架构之一

简介 qmikjson是基于java写的一套json协议转换框架,支持 文本跟javabean,map,list的相互转换,是目前市场上java语言最高效的转换框架之一. api极其简单 适用场景 适合小数据对象的数据转换,在...

leochen36
2013/10/13
887
9
Jackson应用一 Simple data binding

Jackson 是一个高性能的JSON Java 库,网址参考: http://wiki.fasterxml.com/JacksonHome 先看看最简单的Simple data binding怎么使用。就是可以将属于Maps,Lists,Strings,Numbers,Nulls的J...

长平狐
2012/08/28
176
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
39分钟前
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
42分钟前
5
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部