1,JSONObjectjava
json對象,就是一個鍵對應一個值,使用的是大括號{ },如:{key:value}json
2,JSONArray數組
json數組,使用中括號[ ],只不過數組裏面的項也是json鍵值對格式的spa
Json對象中添加的是鍵值對,JSONArray中添加的是Json對象code
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) 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", "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 = 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("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 = jsonArray.getJSONObject(0);//獲取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") + 3);//Name Password field = field.toLowerCase().charAt(0) + field.substring(1);//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") + 3);//Name Password field = field.toLowerCase().charAt(0) + field.substring(1);//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); } }
方法調用:blog
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","123")); // 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","123"); //{"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", "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 = BeanConverter.toJavaBean(new Stu(), map); System.out.println(o);//Stu{name='hoobey', password='123'} } }