JSONObject、JSONArray、Map、JavaBean的相互转换
1,JSONObject
json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value}
2,JSONArray
json数组,使用中括号[ ],只不过数组里面的项也是json键值对格式的
Json对象中添加的是键值对,JSONArray中添加的是Json对象
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator; public class JsonTest { public static void main(String[] args) {
//----------------JsonObject创建的方法-----------------------------------------------------------
//创建JsonObject第一种方法
JSONObject jsonObject = new JSONObject();
jsonObject.put("UserName", "kobi");
jsonObject.put("age", "");
jsonObject.put("workIn", "ALI");//此处的"ALI"也可以替换为一个json{"sex":"男","station":"徐州","hoobey":"coding"}
// System.out.println("jsonObject1:" + jsonObject);//jsonObject1:{"UserName":"kobi","workIn":"ALI","age":"34"}
Iterator iterator = jsonObject.keys();//用Iterator迭代器遍历取值,建议用反射机制解析到封装好的对象中
while (iterator.hasNext()) {
String key = (String) iterator.next();
String value = jsonObject.getString(key);
System.out.println(value);//输出值 kobi ALI 34
}
//创建JsonObject第二种方法
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("UserName", "ZHULI");
hashMap.put("age", "");
hashMap.put("workIn", "ALI");
// System.out.println("jsonObject2:" + JSONObject.fromObject(hashMap));//jsonObject2:{"UserName":"ZHULI","workIn":"ALI","age":"30"} //----------------JSONArray创建的方法-----------------------------------------------------------
//一:遍历JsonArray
String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]"; // 一个未转化的字符串
JSONArray json = JSONArray.fromObject(str); // 首先把字符串转成 JSONArray 对象
if (json.length() > ) {
for (int i = ; i < json.length(); i++) {
JSONObject job = json.getJSONObject(i); // 遍历 jsonarray 数组,把每一个对象转成 json 对象
// System.out.println(job);//{"name":"a","value":"aa"} {"name":"b","value":"bb"} {"name":"c","value":"cc"}.....
// System.out.println(job.get("name")); // a b c d }
} //创建JsonArray方法2
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("kobi");
arrayList.add("");
arrayList.add("ALI");
//System.out.println("jsonArray2:" + JSONArray.fromObject(arrayList));//jsonArray2:["kobi","34","ALI"] } @Test
public void test0105() {
/*
取出name4值过程步骤: 1.将以上字符串转成JSONArray对象 2.取出对象的第一项,JSONObject 3.取出name1的值JSONObject
4.然后取出name2的值JSONObject对象 5.取出name4的值value2
* */
/* 记住":"前是键,符号后是值 大括号成对找 一层层拨开就清楚了*/
String str = "[{name1:{name2:{name3:'value1',name4:'value2'}}},{}]"; JSONArray jsonArray = JSONArray.fromObject(str);// 将结果转成JSONArray对象的形式 JSONObject getJsonObj = jsonArray.getJSONObject();//获取json数组中的第一项 JSONObject json = getJsonObj.getJSONObject("name1").getJSONObject("name2");//{"name4":"value2","name3":"value1"}
Object value = json.get("name4");
System.out.println(value);//value2
} @Test
public void test01051() {
JSONObject json = new JSONObject();
JSONArray jsonArray = new JSONArray(); json.put("key", "value");//JSONObject对象中添加键值对
jsonArray.put(json);//将JSONObject对象添加到Json数组中 System.out.println(json);
System.out.println(jsonArray);
} }
相互转换的方法如下,可以运用到日常的工作中去:
package com.suning.crawler.util; import net.sf.json.JSONObject;
import sun.security.util.Password; import java.lang.reflect.Method;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; /**
* @Author: hoobey
* @Description:
* @Date: Created in 9:12 2018/1/6
* @Modified By:
* *转换器
* 1:将JavaBean 转换成Map、JSONObject
* 2:将JSONObject 转换成Map
*/
public class BeanConverter {
/**
* 将javaBean转换成Map
*
* @param javaBean javaBean
* @return Map对象
*/
public static Map<String, String> BeantoMap(Object javaBean) {
Map<String, String> result = new HashMap<String, String>();
Method[] methods = javaBean.getClass().getDeclaredMethods(); for (Method method : methods) {
try {
if (method.getName().startsWith("get")) {
String field = method.getName();//getName getPassword
field = field.substring(field.indexOf("get") + );//Name Password
field = field.toLowerCase().charAt() + field.substring();//name password
Object value = method.invoke(javaBean, (Object[]) null);
result.put(field, null == value ? "" : value.toString());
}
} catch (Exception e) {
}
} return result;
} /**
* 将json对象转换成Map
*
* @param jsonObject json对象
* @return Map对象
*/
@SuppressWarnings("unchecked")
public static Map<String, String> JsontoMap(JSONObject jsonObject) {
Map<String, String> result = new HashMap<String, String>();
Iterator<String> iterator = jsonObject.keys();
String key = null;
String value = null;
while (iterator.hasNext()) {
key = iterator.next();
value = jsonObject.getString(key);
result.put(key, value);
}
return result;
} /**
* 将javaBean转换成JSONObject
*
* @param bean javaBean
* @return json对象
*/
public static JSONObject toJSON(Object bean) {
return new JSONObject(BeantoMap(bean));
} /**
* 将map转换成Javabean
*
* @param javabean javaBean
* @param data map数据
*/
public static Object toJavaBean(Object javabean, Map<String, String> data) {
Method[] methods = javabean.getClass().getDeclaredMethods();
for (Method method : methods) {
try {
if (method.getName().startsWith("set")) {
String field = method.getName(); //setName setPassword
field = field.substring(field.indexOf("set") + );//Name Password
field = field.toLowerCase().charAt() + field.substring();//name password
method.invoke(javabean, new Object[]
{
data.get(field)
});
}
} catch (Exception e) {
e.printStackTrace();
}
} return javabean;
} /**
* 将javaBean转换成JSONObject
*
* @param data javaBean
* @return json对象
* @throws ParseException json解析异常
*/
public static void toJavaBean(Object javabean, String data) throws ParseException {
JSONObject jsonObject = new JSONObject(data);
Map<String, String> datas = BeantoMap(jsonObject);
toJavaBean(javabean, datas);
}
}
方法调用:
package com.suning.crawler.util;
import net.sf.json.JSONObject;
import org.junit.Test; import java.util.HashMap;
import java.util.Map;
import java.util.Set; /**
* @Author: hoobey
* @Description:
* @Date: Created in 9:16 2018/1/6
* @Modified By:
*/
public class Test0106 {
/*javaBean转换成Map*/
@Test
public void test1(){
Map<String, String> map = BeanConverter.BeantoMap(new Stu("hoobey",""));
// Map<String, String> map = BeanConverter.toMap(new Stu("hoobey", "213"));
// Set<Map.Entry<String, String>> entry = map.entrySet(); //Set集合中存储的是Map.Entry<String, String> entry
//推荐使用这种map遍历 尤其是容量大的时候 map.entrySet()返回此映射中包含的映射关系的 Set视图
for(Map.Entry<String, String> entry : map.entrySet()){
System.out.println("key="+entry.getKey()+",value="+entry.getValue());
}
} /* * 将json对象转换成Map*/
@Test
public void test2(){ JSONObject json =new JSONObject();
json.put("hoobey",""); //{"hoobey":"123"}
Map<String, String> toMap = BeanConverter.JsontoMap(json);
for(Map.Entry<String, String> entry : toMap.entrySet()){
System.out.println("key="+entry.getKey()+",value="+entry.getValue());
}
} /*将javaBean转换成JSONObject*/
@Test
public void test3(){
JSONObject toJSON = BeanConverter.toJSON(new Stu("hoobey", ""));
System.out.println(toJSON);//{"password":"123","name":"hoobey"}
} /*将map转换成Javabean map中存放的键值一定和bean相对应*/
@Test
public void test4(){
Map<String, String> map = new HashMap<String, String>();
map.put("name","hoobey");
map.put("password","");
Object o = BeanConverter.toJavaBean(new Stu(), map);
System.out.println(o);//Stu{name='hoobey', password='123'}
}
}
JSONObject、JSONArray、Map、JavaBean的相互转换的更多相关文章
- JSONObject,JSONArray,Map,String之间转换
http://blog.csdn.net/superit401/article/details/51727739 1.String转JSONObject String jsonMessage = &q ...
- java和js中JSONObject,JSONArray,Map,String之间转换
--------------------------------------------------Java中--------------------------------------------- ...
- JSONObject,JSONArray,String,Map间的互转
引言 在平常的Web项目开发过程中,json和String.map是最常用的类型和返回结果集,其中也经常会涉及到之间的各种相互转换,下边就总结一下: 1.String转JSONObject ...
- JSONObject.fromObject(map)(JSON与JAVA数据的转换)
JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 上一篇文章中有这么 ...
- 转载:JSONObject.fromObject(map)(JSON与JAVA数据的转换)
转载网址:http://blog.sina.com.cn/s/blog_821025b70100wh6v.html JSON与JAVA数据的转换(JSON 即 JavaScript Object Na ...
- [转]json+JSONObject+JSONArray 结合使用
JSONObject与JSONArray的区别简述: 区别在于JSONObject是一个{}包裹起来的一个对象(Object),而JSONArray则是[]包裹起来的一个数组(Array),说白点就是 ...
- java JSONObject/JSONArray详解
应用架包:json-lib-2.4-jdk15.jar.及相关依赖架包. 一.JSONObject和JSONArray对象 -------------------------------------- ...
- jsonObject jsonarray
1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: commons-lang.jar commons-beanutils.jar commons ...
- jsonObject jsonArray jsonTokener jsonStringer,json解析以及http请求获取josn数据并加以解析
JSON的定义: 一 种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的 支持),从而可以在不同平台间进行 ...
随机推荐
- JavaEE 之 Spring Data JPA(二)
1.JPQL a.定义:Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在以面向对象表达式语言的表达式,将SQL语法和简单查询语义绑定在一起·使用这种语言编写的查询是可移植的,可以被编译成 ...
- MyEclipse、Eclipse使用配置及部分问题
简单总结一下myeclipse首次使用的配置,eclipse类似.总结的不是很全面,如有新的看法,欢迎下方留言. 最优设置 1.myeclipse激活 myeclipse.eclipse程序及激活工具 ...
- XML相关的安全漏洞-XXE,XPATH小结
0x00前言: 本文主要小结以下php下的xpath查询xml结构的漏洞利用和XXE漏洞利用 xml是可扩展标记语言,它被设计出来是为了存储传输数据的. 它的结构是树形结构,并且标签要成对出现比如下面 ...
- 牛客练习赛35-背单词-线性DP
背单词 思路 :dp[ i ] [ 0 ]表示 第i 位放的元音 dp[ i ] [ 1 ]表示 第i 位放的辅音 ,cnt [ i ]含义是 长度为 i 的方案数. 转移 :dp[ i ] ...
- A - Character Encoding HDU - 6397 - 方程整数解-容斥原理
A - Character Encoding HDU - 6397 思路 : 隔板法就是在n个元素间的(n-1)个空中插入k-1个板,可以把n个元素分成k组的方法 普通隔板法 求方程 x+y+z=10 ...
- Redis自学笔记:4.2进阶-过期时间
4.2过期时间 **4.2.1命令介绍* 在redis中使用 expire 命令设置一个键的过期时间后redis会自动删除它. expire key seconds (seconds单位是秒,必须是整 ...
- MySql基础笔记(二)Mysql语句优化---索引
Mysql语句优化--索引 一.开始优化前的准备 一)explain语句 当MySql要执行一个查询语句的时候,它首先会对语句进行语法检查,然后生成一个QEP(Query Execution Plan ...
- JavaScript—异步提交表单的6种方式
FormData的详细介绍及使用请点击此处,那里对FormData的方法和事件已经表述的非常清楚,这里就不再浪费时间在介绍一遍了.本文主要针对FormData对象的使用以及异步文件上传进行详细的说明. ...
- (转)为什么wait(),notify()和notifyAll()必须在同步块或同步方法中调用
我们常用wait(),notify()和notifyAll()方法来进行线程间通信.线程检查一个条件后就行进入等待状态,例如,在“生产者-消费者”模型中,生产者线程发现缓冲区满了就等待,消费者线程通过 ...
- sqlserver 为表添加一个自增主键
alter table person add id int primary key identity(1,1) not null