JSON 学习 :JSON数据串、对象、数组之间的转化

  1 package utils;
  2
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 import com.google.gson.Gson;
  6 import com.google.gson.JsonObject;
  7 import com.google.gson.reflect.TypeToken;
  8 import java.lang.reflect.Type;
  9 import bean.User;
 10 import net.sf.json.JSONArray;
 11
 12 public class GsonUtil {
 13
 14     /**
 15      * 将json数据串转换成对象数据
 16      *
 17      * @param json
 18      * @param cls
 19      * @return
 20      * @throws Exception
 21      */
 22     public static <T> T fromJson(String json, Class<T> cls) throws Exception {
 23         T obj = null;
 24         Gson gson = new Gson();
 25         obj = cls.newInstance();
 26         obj = gson.fromJson(json, cls);
 27         return obj;
 28     }
 29
 30     /**
 31      * 将对象转化成Json 数据串
 32      *
 33      * @param obj
 34      * @return
 35      */
 36     public static String objToJson(Object obj) {
 37         return new Gson().toJson(obj);
 38     }
 39
 40     /**
 41      * 将List Json数据串转换成List集合
 42      *
 43      * @param json
 44      * @param clas
 45      * @return
 46      */
 47     public static <T> ArrayList<T> jsonToArrayList(String json, Class<T> cls) {
 48         Type type = new TypeToken<ArrayList<JsonObject>>() {
 49         }.getType();
 50         ArrayList<JsonObject> jsonObjects = new Gson().fromJson(json, type);
 51
 52         ArrayList<T> arrayList = new ArrayList<>();
 53         for (JsonObject jsonObject : jsonObjects) {
 54             arrayList.add(new Gson().fromJson(jsonObject, cls));
 55         }
 56         return arrayList;
 57     }
 58
 59     /**
 60      * 将List集合转化成Json数据串
 61      *
 62      * @param list
 63      * @return
 64      */
 65     public static String listToJson(Object list) {
 66         JSONArray jsonArray = JSONArray.fromObject(list);
 67         return jsonArray.toString();
 68     }
 69
 70     /**
 71      * test
 72      * 测试
 73      * @param args
 74      */
 75     public static void main(String[] args) {
 76         try {
 77             User u1 = new User();
 78             u1.setUid(100000);
 79             u1.setAddress("sasassdasd");
 80             u1.setAge(25);
 81             u1.setEmail("[email protected]");
 82             u1.setName("sai");
 83             String string = objToJson(u1);
 84             User u2 = new User();
 85             User u3 = new User();
 86             u3.setUid(100000);
 87             u3.setAddress("sasassdasd");
 88             u3.setAge(25);
 89             u3.setEmail("[email protected]");
 90             u3.setName("sai");
 91             List<User> uList = new ArrayList<User>();
 92             uList.add(u1);
 93             uList.add(u3);
 94             String s2 = listToJson(uList);
 95
 96             List<User> uList1 = new ArrayList<User>();
 97             uList1 = jsonToArrayList(s2, User.class);
 98
 99             for (User user : uList1) {
100                 System.out.println(user.toString());
101             }
102
103             u2 = fromJson(string, User.class);
104             System.out.println(u2.toString());
105         } catch (Exception e) {
106             // TODO Auto-generated catch block
107             e.printStackTrace();
108         }
109     }
110
111 }
时间: 2024-11-07 13:20:09

JSON 学习 :JSON数据串、对象、数组之间的转化的相关文章

js数字、字符串、数组之间的转化

1.数组转字符串 var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 2.字符串转数组 var s = "abc,abcd,aaa"; ss = s.split(","); 3.数字转字符串toString var i = 10; var s = i.toString(); 4.字符串转数字 parseInt(字符串) parseInt("ssss999"); //错误 输

重踏学习Java路上_Day15(对象数组,集合类,列表)

1:对象数组(掌握)    (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组.    (2)案例:        用数组存储5个学生对象,并遍历数组. public class Student {    // 成员变量    private String name;    private int age; // 构造方法    public Student() {        super();    } public Student(String n

Yii的学习(2)--数据访问对象 (DAO)

摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.dao Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS).使用Yii的DAO开发的应用程序可以很容易地切换使用不同的数据库管理系统,而不需要修改数据访问代码. 数据访问对象(DAO) 对访问存储在不同数据库管理系统(DBMS)中的数据提

【C++基础学习】成员对象与对象数组

第一部分 对象成员与对象数组 从一个简单的例子开始说起,首先定义一个Coordinate的类,里面有两个公有的成员变量m_iX和m_iY,分别代表横坐标和纵坐标. 接下来,定义一个对象数组cood和一个指向一个对象数组的指针p: 那么,coord和p究竟有何不同呢? 初始化的时候,先初始化m_CoorA和m_CoorB,接着初始化Line; 析构的时候是相反的过程,先析构Line,再分别析构m_CoorA和m_CoorB. 第二部分 深拷贝与浅拷贝 第三部分 常成员函数

java 列表、集合与数组之间的转化

import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; public class Test2 { public static void main(String[] args) { List list = new ArrayList(); list.add("a"); list.add("

NumPy-快速处理数据--ndarray对象--数组的创建和存取

本文摘自<用Python做科学计算>,版权归原作者所有. NumPy为Python提供了快速的多维数组处理的能力,而SciPy则在NumPy基础上添加了众多的科学计算所需的各种工具包,有了这两个库,Python就有几乎和Matlab一样的处理数据和计算的能力了.可以直接按照书中写的下载Python(x,y),也可以单独配置各个模块.配置方法见:Numpy.SciPy.MatPlotLib在Python2.7.9下的安装与配置 一.为什么需要Numpy处理数据? 1. 标准安装的Python中用

Java学习8——类(对象)之间的关系

(基础语法结束,开始看面向对象) 关联 关联体现的是两个类之间语义级别的一种依赖关系,比如我和我的老师. 继承(一般和特殊) 继承是指一个类继承另外一个类的的功能,并可以增加新的功能,"XX是一个AA"的语义很符合继承的含义."猴子是一种动物"可以抽象为"猴子类"继承"动物类". 聚合(整体和部分) 聚集,整体和部分是可分离的,可以具有各自的生命周期.部分可以属于多个整体的对象,也可以 为多个整体对象共享,比如球员和球队.教练

Java中集合与数组之间的转化

一.集合转化为数组: 采用集合.toArray()方法,根据转化为数组的类型又可以分为: 1.转化为Object[]类型数组 比如:Object[] listArray = list.toArray(); Object[] setArray = set.toArray(); 2.转化为具体类型数组 比如:String[] listArray1 = (String[]) list.toArray(new String[0]) 或者:String[] listArray2 = (String[])

Android读写JSON格式的数据之JsonWriter和JsonReader

最近的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.最近打算找一份Android的工作,要继续拾起以前的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才开始办公.不说这些了,下面开始今天的正文. JSON格式的数据通常用于网络传输,尤其是在移动设备上与服务端进行数据交互.JSON与XML比较有明显的优势.XML格式的数据非常臃肿,传递少量的数据就要附带很多额外的格式数据.而JSON除了少量的符号外,全部是真正的数据,所以有越来越多的程序用JSON来取代XM