測试代码:

package com.yanek.util.json;

import java.util.ArrayList;
import java.util.List; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class JSONLibUtil { /**
* @param args
*/
public static void main(String[] args) { Hotel h1=new Hotel();
h1.setId(1);
h1.setName("name1"); Hotel h2=new Hotel();
h2.setId(2);
h2.setName("name2"); RoomTypeVO t1=new RoomTypeVO();
t1.setPrice("20");
t1.setTypeid(1);
t1.setTypename("nnn1"); List<RoomTypeVO> RoomTypeVOs=new ArrayList<RoomTypeVO>();
RoomTypeVOs.add(t1);
RoomTypeVOs.add(t1);
h1.setRoomTypeVOs(RoomTypeVOs); Hotel hotel=new Hotel(); System.out.println("json1:::"+bean2Json(h1)); String s=bean2Json(h1);
hotel=json2Bean(s,Hotel.class); System.out.println("json2:::"+bean2Json(hotel)); System.out.println("json3:::"+beanlist2Json(RoomTypeVOs)); String s2=beanlist2Json(RoomTypeVOs); Object[] list=getDTOArray(s2,RoomTypeVO.class); for(Object v:list)
{
RoomTypeVO rt=(RoomTypeVO)v;
System.out.println(rt.getTypeid()+"-"+rt.getTypename()+"-"+rt.getPrice());
} } public static String bean2Json(Object obj){
JSONObject jsonObject=JSONObject.fromObject(obj);
return jsonObject.toString();
} public static String beanlist2Json(Object obj){
JSONArray jsonObject=JSONArray.fromObject(obj);
return jsonObject.toString();
} @SuppressWarnings("unchecked")
public static <T> T json2Bean(String jsonStr,Class<T> objClass){
return (T)JSONObject.toBean(JSONObject.fromObject(jsonStr), objClass);
} @SuppressWarnings("unchecked")
public static <T> T jsonarray2Bean(String jsonStr,Class<T> objClass){
return (T)JSONObject.toBean(JSONObject.fromObject(jsonStr), objClass);
} /**
* 从一个JSON数组得到一个java对象数组,形如:
* [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]
* @param object
* @param clazz
* @return
*/
public static Object[] getDTOArray(String jsonString, Class clazz){ JSONArray array = JSONArray.fromObject(jsonString);
Object[] obj = new Object[array.size()];
for(int i = 0; i < array.size(); i++){
JSONObject jsonObject = array.getJSONObject(i);
obj[i] = JSONObject.toBean(jsonObject, clazz);
}
return obj;
} }

输出例如以下:

json1:::{"id":1,"name":"name1","roomTypeVOs":[{"price":"20","typeid":1,"typename":"nnn1"},{"price":"20","typeid":1,"typename":"nnn1"}]}
json2:::{"id":1,"name":"name1","roomTypeVOs":[{"price":"20","typeid":1,"typename":"nnn1"},{"price":"20","typeid":1,"typename":"nnn1"}]}
json3:::[{"price":"20","typeid":1,"typename":"nnn1"},{"price":"20","typeid":1,"typename":"nnn1"}]
1-nnn1-20
1-nnn1-20

相关java实体类:

package com.yanek.util.json;

public class RoomTypeVO {

	public int getTypeid() {
return typeid;
}
public void setTypeid(int typeid) {
this.typeid = typeid;
} public String getTypename() {
return typename;
}
public void setTypename(String typename) {
this.typename = typename;
} public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
private int typeid;
private String typename;
private String price; } package com.yanek.util.json; import java.util.List; public class Hotel { public List<RoomTypeVO> getRoomTypeVOs() {
return RoomTypeVOs;
}
public void setRoomTypeVOs(List<RoomTypeVO> roomTypeVOs) {
RoomTypeVOs = roomTypeVOs;
}
private List<RoomTypeVO> RoomTypeVOs; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private int id;
private String name; }

java对象和json数据转换实现方式1-使用json-lib实现的更多相关文章

  1. json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException

    转:json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException 执行:JSONArray arr ...

  2. string 转 java对象、转map的方式

    1.使用fastJson 将String转 map: String out; Object succesResponse = JSON.parse(out);    //先转换成Object Map ...

  3. java对象和json数据转换实现方式3-使用jackson实现

    測试代码: package com.yanek.util.json; import java.io.IOException; import java.io.StringWriter; import j ...

  4. 浅谈Java对象回收的三种方式

    半夜睡不着,加上最近在看Java虚拟机,写点给新手和自己看的东西. 第一类:生命周期中止 void scope(){ Test t = new Test(); } 第二类:对象无引用 (一).对象的应 ...

  5. java对象占用内存大小计算方式

    案例一: User public class User { } UserSizeTest public class UserSizeTest { static final Runtime runTim ...

  6. json、xml和java对象之间的转化

    其实从面相对象的角度来理解这个问题,就会很清晰.java中的一切皆对象即把世间万物(Everything in the world)看做java对象,任何处理不了的问题都可以先转化成java对象在做处 ...

  7. redis 存储java对象 两种方式

    根据redis的存储原理,Redis的key和value都支持二进制安全的字符串 1.利用序列化和反序列化的方式存储java对象我们可以通过对象的序列化与反序列化完成存储于取出,这样就可以使用redi ...

  8. jackson java对象和json对象的互相转换

    概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotation ...

  9. Spring: 读取 .properties 文件地址,json转java对象,el使用java类方法相关 (十三)

    1. 在Java中获取 .properties 文件的路径 (src/main/resources 下) ProjectName |---src/main/java |---src/main/reso ...

随机推荐

  1. m_Orchestrate learning system---二十五、复制类的时候最容易出现的错误是什么

    m_Orchestrate learning system---二十五.复制类的时候最容易出现的错误是什么 一.总结 一句话总结:命名空间错误导致Analyze类虽然继承了Base类,但是没有执行里面 ...

  2. NAS是什么

    NAS是什么 简介 NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”.它是一种专用数据存储服务器. ...

  3. 关键字super

    1.super,相较于关键字this,可以修饰属性.方法.构造器 2.super修饰属性.方法:在子类的方法.构造器中,通过super.属性或者super.方法的形式,显式的调用父类的指定 属性或方法 ...

  4. Windows 相关

    Open the Windows Update troubleshooter If your computer is having problems finding and installing op ...

  5. ListView和GridView的setOnScrollListener的简介

    ---恢复内容开始--- 设置ListView和GridView的滑动监听 circle_lv.setOnScrollListener(new AbsListView.OnScrollListener ...

  6. ELK到底是什么?那么多公司用!__转载

    Sina.饿了么.携程.华为.美团.freewheel.畅捷通 .新浪微博.大讲台.魅族.IBM...... 这些公司都在使用ELK!ELK!ELK! ELK竟然重复了三遍,是个什么?   一.ELK ...

  7. [SHOI2008]堵塞的交通(线段树维护联通性)

    题目 2行c列个点,开始时互不联通,支持给同一列或着同一行相邻的两个点连边,和询问两个点能否在一个联通块里. 1≤C≤100000 1<=操作数<=100000; 题解 线段树的又一个骚操 ...

  8. [USACO14FEB]路障Roadblock

    题目:洛谷P2176. 题目大意:有n个点m条无向边,一个人要从1走到n,他会走最短路.现在可以让一条边的长度翻倍,求翻倍后这个人要多走多少距离. 解题思路:首先可以知道,翻倍肯定是在最短路上的某条边 ...

  9. MPI对道路车辆情况的Nagel-Schreckenberg 模型进行蒙特卡洛模拟

    平台Ubuntu 16.04,Linux下MPI环境的安装见链接:https://blog.csdn.net/lusongno1/article/details/61709460 据 Nagel-Sc ...

  10. Kubernetes安装配置(包括master和node)

    部署Kubernetes云计算平台,至少准备两台服务器,此处为4台,包括一台Docker仓库: Kubernetes Master节点:192.168.124.20 Kubernetes Node1节 ...