`
Cash
  • 浏览: 180818 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Java数据 Json 封装测试

阅读更多

借鉴了一下网上一位开发者写大打包类,这个类实用了1.5的泛行特性。并测试一下实际的输出

 

 

package im_testing;


import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.LinkedList;
import java.util.TreeSet;

   
public class JsonUtil { 
    
    //private static org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(JsonUtil.class); 
   
    
    public static String object2json(Object obj) {
      StringBuilder json = new StringBuilder();
      if (obj == null) {
        json.append("\"\""); //对象为null 输出 "" 到 Json
      } else if (obj instanceof String || obj instanceof Integer || obj instanceof Float
          || obj instanceof Boolean || obj instanceof Short || obj instanceof Double
          || obj instanceof Long || obj instanceof BigDecimal || obj instanceof BigInteger
          || obj instanceof Byte) {
        json.append("\"").append(string2json(obj.toString())).append("\""); //对象为字符串、字符、数字等   将内容两端加 "" 输出到 Json
      } else if (obj instanceof Object[]) {
        json.append(array2json((Object[]) obj));
      } else if (obj instanceof List) {
        json.append(list2json((List<?>) obj));
      } else if (obj instanceof Map) {
        json.append(map2json((Map<?, ?>) obj));
      } else if (obj instanceof Set) {
        json.append(set2json((Set<?>) obj));
      } else {
        json.append(bean2json(obj));
      }
      return json.toString();
    }
  
   //Bean 字符化  {"ID":"023945","WC":"1","hall":"1","room":"2"}
   public static String bean2json(Object bean) {
      StringBuilder json = new StringBuilder();
      json.append("{");
      PropertyDescriptor[] props = null;
      try {
       props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors();
      } catch (IntrospectionException e) {}
      if (props != null) {
        for (int i = 0; i < props.length; i++) {
         try {
            String name = object2json(props[i].getName());
            String value = object2json(props[i].getReadMethod().invoke(bean));
            json.append(name);
            json.append(":");
            json.append(value);
            json.append(",");
             } catch (Exception e) {}
        }
        json.setCharAt(json.length() - 1, '}');
      } else {
        json.append("}");
      }
      return json.toString();
    }
  
     //list 字符化  ["123","456"]
     public static String list2json(List<?> list) {
      StringBuilder json = new StringBuilder();
      json.append("[");
      if (list != null && list.size() > 0) {
        for (Object obj : list) {
          json.append(object2json(obj));
          json.append(",");
        }
        json.setCharAt(json.length() - 1, ']');
      } else {
        json.append("]");
      }
      return json.toString();
    }
  
    //对象数组 [{"ID":"023945","WC":"1","hall":"1","room":"2"},{"ID":"082384","WC":"1","hall":"2","room":"3"}]
    //适合内容列表,封装为bean发送到JQuery
    public static String array2json(Object[] array) {
      StringBuilder json = new StringBuilder();
      json.append("[");
      if (array != null && array.length > 0) {
        for (Object obj : array) {
          json.append(object2json(obj));
          json.append(",");
        }
        json.setCharAt(json.length() - 1, ']');
      } else {
        json.append("]");
      }
      return json.toString();
    }
  
    //map 
    public static String map2json(Map<?, ?> map) {
      StringBuilder json = new StringBuilder();
      json.append("{");
      if (map != null && map.size() > 0) {
        for (Object key : map.keySet()) {
          json.append(object2json(key));
          json.append(":");
          json.append(object2json(map.get(key)));
          json.append(",");
        }
        json.setCharAt(json.length() - 1, '}');
      } else {
        json.append("}");
      }
      return json.toString();
    }
  
    //set
    public static String set2json(Set<?> set) {
      StringBuilder json = new StringBuilder();
      json.append("[");
      if (set != null && set.size() > 0) {
        for (Object obj : set) {
          json.append(object2json(obj));
          json.append(",");
        }
        json.setCharAt(json.length() - 1, ']');
      } else {
        json.append("]");
      }
      return json.toString();
    }
  
    //字符串
    public static String string2json(String s) {
      if (s == null)
        return "";
      StringBuilder sb = new StringBuilder();
      for (int i = 0; i < s.length(); i++) {
        char ch = s.charAt(i);
        switch (ch) {
        case '"':
          sb.append("\\\"");
          break;
        case '\\':
          sb.append("\\\\");
          break;
        case '\b':
          sb.append("\\b");
          break;
        case '\f':
          sb.append("\\f");
          break;
        case '\n':
          sb.append("\\n");
          break;
        case '\r':
          sb.append("\\r");
          break;
        case '\t':
          sb.append("\\t");
          break;
        case '/':
          sb.append("\\/");
          break;
        default:
          if (ch >= '\u0000' && ch <= '\u001F') {
            String ss = Integer.toHexString(ch);
            sb.append("\\u");
            for (int k = 0; k < 4 - ss.length(); k++) {
              sb.append('0');
            }
            sb.append(ss.toUpperCase());
          } else {
            sb.append(ch);
          }
        }
      }
      return sb.toString();
    }
   
    public static void main(String arg[]){
     String a = "abc\ndefg\"";
     System.out.println("String " + JsonUtil.object2json(a));
    
     List l = new LinkedList();
     l.add("123");l.add("456");
     System.out.println("List " + JsonUtil.object2json(l));
    
     Map m = new HashMap();
     m.put("a", "a-123");m.put("b", "b-456");
     System.out.println("Map " + JsonUtil.object2json(m));
    
     Set s = new TreeSet();
     s.add("789");s.add("123");s.add("456");
     System.out.println("Set " + JsonUtil.object2json(s));
    
     House h1 = new House();
     House h2 = new House();
     h2.setHall(2);h2.setID("082384");h2.setRoom(3);h2.setWC(1);
     System.out.println("House1 " + JsonUtil.bean2json(h1));
     System.out.println("House2 " + JsonUtil.bean2json(h2));
    
     BigInteger bi = new BigInteger("12345678");
     System.out.println("BigInteger " + JsonUtil.object2json(bi));
    
     Object[] o = {h1,h2};
     System.out.println("{h1,h2} " + JsonUtil.object2json(o));
    
    }
   
}

 

 

 

 

以下是输出:

String "abc\ndefg\""
List ["123","456"]
Map {"b":"b-456","a":"a-123"}
Set ["123","456","789"]
House1 {"ID":"023945","WC":"1","hall":"1","room":"2"}
House2 {"ID":"082384","WC":"1","hall":"2","room":"3"}
BigInteger"12345678"
{h1,h2} [{"ID":"023945","WC":"1","hall":"1","room":"2"},{"ID":"082384","WC":"1","hall":"2","room":"3"}]

分享到:
评论

相关推荐

    SSH封装接口返回Json数据

    最后,`DataJson`这个文件可能包含了示例的Json数据,可能是接口返回的样本,或者是用于测试接口的输入数据。分析这个文件可以帮助我们更好地理解接口的输出格式和预期行为。 总结来说,"SSH封装接口返回Json数据...

    java bean 转为JSON

    Java Bean则是一种符合Java编程规范的类,通常用于封装数据。下面我们将详细介绍这个过程,并探讨如何通过代码实现这一转换。 首先,我们需要了解Java Bean的基本结构。一个Java Bean通常包含私有属性、对应的...

    拷贝JSON对象值进Java Bean对象

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,而Java Bean是符合特定规范的Java类,通常用于封装数据。这篇文章将深入探讨如何通过源码和工具实现这一转换过程。 首先,我们需要理解JSON对象的...

    java程序B站json字幕转srt

    总的来说,这个Java程序是一个典型的文本处理应用,涉及到JSON解析、文件操作、格式转换等多个技术领域,展示了Java在处理数据转换任务上的强大能力。通过理解这些知识点,我们可以更好地理解和使用这样的工具,或者...

    JSON-RPC for Java使用说明

    在"JSON-RPC for Java使用说明.doc"文档中,你可能会找到关于如何设置和配置这些库的详细步骤,包括如何创建服务接口、如何启动服务器、如何创建客户端以及如何进行测试。此外,文档可能还会涵盖错误处理、异步调用...

    表单数据自动封装到javaBean中

    对于封装逻辑,编写单元测试是非常重要的,确保无论数据如何变化,都能正确地映射到JavaBean中。JUnit、Mockito等工具可以帮助进行测试。 总结,表单数据自动封装到JavaBean涉及到多个层面的技术,包括Web框架的...

    对json格式的数据进行封装和转化,@responsebody注解所需的jar包JSON.rar

    在标题中提到的"对json格式的数据进行封装和转化",这是一个关键的Web开发技能,涉及到如何将Java对象转化为JSON字符串,以便于在网络中传输。在Java中,我们通常会使用如Jackson或Gson这样的库来完成这个任务。...

    java REST接口测试 测试小例子

    在这个"java REST接口测试 测试小例子"中,我们将探讨如何在Java环境下进行REST接口的调用以及测试。 首先,`Test.java`文件很可能是包含测试代码的主类。在Java中,我们通常使用JUnit框架进行单元测试,不过这个...

    JSON的List数据封装解析方案.pdf

    本文档主要讨论了如何将Java对象封装为JSON的List数据,以及如何将JSON解析为包含对象的List。以下是对这个方案的详细说明: 1. **JSON对象与List的封装**: - 首先,我们需要创建一个工具类`ListToJSONArray`,该...

    java-mongodb底层封装

    - 文档数据库:MongoDB以JSON格式(BSON)存储数据,这种格式易于理解和处理,特别适合于Web应用程序。 2. **Java MongoDB驱动**: - MongoDB官方提供了Java驱动程序,它允许Java开发者通过JDBC-like API与...

    java fusionChart属性封装

    总结来说,"java fusionChart属性封装"涉及到的关键点有:1) 创建Java类封装FusionCharts的属性,2) 实现方法生成FusionCharts的JavaScript代码,3) 处理动态属性和数据源,4) 可能包含的示例代码或数据文件的解析与...

    ajax js和java封装好的工具

    **json.txt**可能包含了一些示例或测试的JSON数据,供开发者参考或测试JSON序列化和反序列化功能。 这个工具集成了Struts2的AJAX支持,JavaScript的前端交互以及Java的后端处理,为开发者提供了一个快速开发的环境...

    Java 解析国标hj212协议

    在Java开发环境中,解析这种协议通常涉及到网络通信、数据编码与解码、XML或JSON处理等多个技术领域。下面将详细探讨相关知识点。 1. **hj212协议**:全称为《污染源在线自动监控(监测)系统数据传输标准》,是...

    java反射实现javabean转json实例代码.docx

    JavaBean通常用于封装数据,在本案例中,我们将使用JavaBean作为数据模型。 #### 四、核心实现代码解析 根据提供的部分代码,我们可以看到两个主要类:`ObjectToJson` 和 `Test`。 ##### 4.1 `ObjectToJson` 类...

    Json-jar包

    "Json-jar包"是一个专门用于学习和处理JSON的Java库,它被封装在一个JAR(Java Archive)文件中。JAR文件是Java平台的标准归档格式,它可以包含多个类文件、资源文件以及元数据,方便开发者打包、分发和运行Java应用...

    json jquery dwr 个人测试

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但也使用了类似于C家族语言的习惯,包括C、C++、C#、Java、JavaScript、Perl、Python等。JSON易于人阅读和编写,...

    Java webService服务端封装

    - **数据序列化与反序列化**:JAX-RS支持多种数据格式如JSON和XML,可以通过`@Produces`和`@Consumes`注解指定。 - **依赖注入**:利用CDI(Context and Dependency Injection)或Jersey的注入机制,方便地管理...

    JSON序列化工具探析.pdf

    我们只要导入这个包就可以很简单地解析和封装JSON数据。 2.2 Json-lib Json-lib可以将Java对象转换为JSON格式的字符串,也可以将Java对象转换为XML格式的文档,同样可以将JSON字符串转换为Java对象或是将XML字符串...

    java自动化之自动化框架项目(第二天-读取数据文件并封装对象)代码

    在Java自动化领域,数据文件的读取和对象的封装是两个关键的概念,它们在构建自动化框架项目中扮演着重要角色。本项目旨在教你如何利用Java技术实现这一目标,特别是针对第二天的学习内容——从数据文件中读取信息并...

Global site tag (gtag.js) - Google Analytics