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", "34");
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) ();
String value = String(key);
System.out.println(value);//输出值  kobi ALI 34
}
//创建JsonObject第⼆种⽅法
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("UserName", "ZHULI");
hashMap.put("age", "30");
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() > 0) {
for (int i = 0; i < json.length(); i++) {
JSONObject job = JSONObject(i);  // 遍历 jsonarray 数组,把每⼀个对象转成 json 对象
// System.out.println(job);//{"name":"a","value":"aa"}  {"name":"b","value":"bb"} {"name":"c","value":"cc"}.....
//  System.out.("name"));  // a b c d
}
}
//创建JsonArray⽅法2
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("kobi");
arrayList.add("34");
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 = JSONObject(0);//获取json数组中的第⼀项
JSONObject json = JSONObject("name1").getJSONObject("name2");//{"name4":"value2","name3":"value1"}
Object value = ("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 awler.util;
import net.sf.json.JSONObject;
import sun.security.util.Password;
import flect.Method;
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 = Class().getDeclaredMethods();
for (Method method : methods) {
try {
if (Name().startsWith("get")) {
String field = Name();//getName  getPassword
field = field.substring(field.indexOf("get") + 3);//Name  Password
field = LowerCase().charAt(0) + field.substring(1);//name password                    Object value = method.invoke(javaBean, (Object[]) null);
result.put(field, null == value ? "" : String());
}
} catch (Exception e) {
}
}
return result;
}
/**
* 将json对象转换成Map
*
* @param jsonObject json对象
* @return Map对象
java数组字符串转数组*/
@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 = ();
value = String(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 = Class().getDeclaredMethods();
for (Method method : methods) {
try {
if (Name().startsWith("set")) {
String field = Name(); //setName  setPassword
field = field.substring(field.indexOf("set") + 3);//Name  Password
field = LowerCase().charAt(0) + field.substring(1);//name  password
method.invoke(javabean, new Object[]
{
<(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 awler.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","123"));
// Map<String, String> map = Map(new Stu("hoobey", "213"));
//  Set<Map.Entry<String, String>> entry = Set(); //Set集合中存储的是Map.Entry<String, String> entry        //推荐使⽤这种map遍历尤其是容量⼤的时候  Set()返回此映射中包含的映射关系的 Set视图for(Map.Entry<String, String> entry : Set()){
System.out.println("key="+Key()+",value="+Value());
}
}
/*  * 将json对象转换成Map*/
@Test
public void test2(){
JSONObject json =new JSONObject();
json.put("hoobey","123");          //{"hoobey":"123"}
Map<String, String> toMap = BeanConverter.JsontoMap(json);
for(Map.Entry<String, String> entry : Set()){
System.out.println("key="+Key()+",value="+Value());        }
}
/*将javaBean转换成JSONObject*/
@Test
public void test3(){
JSONObject toJSON = JSON(new Stu("hoobey", "123"));        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","123");
Object o = JavaBean(new Stu(), map);
System.out.println(o);//Stu{name='hoobey', password='123'}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。