Json字串與java物件互轉
到Json的官網上http://json-lib.sourceforge.net/,下載jar包。在官網也可以看到,使用Json還需要其他的一些jar包,官網上是這樣列的: jakarta commons-lang 2.5 jakarta commons-beanutils 1.8.0 jakarta commons-collections 3.2.1 jakarta commons-logging 1.1.1 ezmorph 1.0.6 當然,我們也可以使用相對新一些版本的jar包,不過需要注意的是,commons-lang這個jar需要選擇2.6版本以下的(當然包括2.6了),因為版本到3.3.0.1以後,jar包中的包名都發生了變化,再使用的話,會報錯i,當然我也沒有深究到底是哪個jar包引起的(有知道的不妨留言給小弟我,在此感謝)。 Json轉java物件經常會用到兩個類net.sf.json.JSONObject和net.sf.json.JSONArray,通過類名就可以看出來,前者是是針對無序集合而言,後者是針對有序集合如List等而言。 簡單介紹以下方法,JSONObject JSONObject.fromObject( Object object )這個方法把java物件做為引數,返回一個JSONObject物件,這個物件就是符合json格式的字串; JSONArray JSONArray.fromObject( Object object )接收一個集合。 先定義一個實體類: package com.bao.json.demo; import java.util.ArrayList; package com.bao.json.domain; public class User { private int id; private String name; private boolean gender; private float price; public User() { super(); } public User(int id, String name) { super(); this.id = id; this.name = name; } 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; } public boolean isGender() { return gender; } public void setGender(boolean gender) { this.gender = gender; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } } 以下是工具類: package com.bao.common.util; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** * @Description:Json工具類 * 有序集合以'['開始,以']'結束;其他以'{'開始,以'}'結束. * java物件轉字串可以使用JSONArray或JSONObject. * @author:bao * @date:Dec 24, 2011 * @see JSONArray */ public class JsonUtil { /** * @Description:POJO轉Json字串 * @param obj * @return String */ public static String bean2JsonStr(Object obj) { JSONObject jsonObj = JSONObject.fromObject(obj); return JsonUtil.toString(jsonObj); } /** * @Description:Json字串轉POJO物件 * @param jsonStr * @param pojo * @return Object */ public static Object jsonStr2Bean(String jsonStr, Class<?> clazz) { Object obj; JSONObject jsonObject = JSONObject.fromObject(jsonStr); obj = JSONObject.toBean(jsonObject, clazz); return obj; } /** * @Description:Json字串轉Map<String, Object> * @param jsonStr * @return Map<String,Object> */ public static Map<String, Object> jsonStr2Map(String jsonStr) { Map<String, Object> result = new HashMap<String, Object>(); JSONObject jsonObj = JSONObject.fromObject(jsonStr); Iterator<?> keys = jsonObj.keys(); String key; Object val; while (keys.hasNext()) { key = (String) keys.next(); val = jsonObj.get(key); result.put(key, val); } return result; } /** * @Description:Json字串轉List,內部物件為Object,需要手動轉換為制定的物件型別 * @param jsonStr * @param pojo * @return List */ public static List jsonStr2List(String jsonStr, Class clazz) { List result = new ArrayList(); JSONArray jsonArray = JSONArray.fromObject(jsonStr); JSONObject jsonObj; Object pojoVal; for (int i = 0; i < jsonArray.size(); i++) { jsonObj = jsonArray.getJSONObject(i); pojoVal = JSONObject.toBean(jsonObj, clazz); result.add(pojoVal); } return result; } public static Object[] jsonStr2ObjectArray(String jsonStr) { JSONArray jsonArray = JSONArray.fromObject(jsonStr); Object[] result = new Object[jsonArray.size()]; for (int i = 0; i < jsonArray.size(); i++) { result[i] = jsonArray.get(i); } return result; } /** * @Description:將Object轉化為String * @param obj 指定物件,預設值為"" * @return String */ public static String toString(Object obj) { return toString(obj, ""); } /** * @Description:將Object轉化為String * @param obj 指定物件 * @param defaultStr 為空的預設字串 * @return String */ public static String toString(Object obj, String defaultStr) { String result = defaultStr; if (obj != null) { result = obj.toString(); } return result; } } 以下是通過junit4.7測試過的: package com.bao.common.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.junit.Test; import com.bao.json.domain.User; public class JsonUtilTest { @Test public void testBeanO2JsonStr() { String result = JsonUtil.bean2JsonStr(getUser()); System.out.println(result); } @Test public void testJsonStr2Bean() { Object obj = JsonUtil.jsonStr2Bean(JsonUtil.bean2JsonStr(getUser()), User.class); System.out.println(obj); } @Test public void testJsonStr2List(){ List list = JsonUtil.jsonStr2List(getFromList().toString(), User.class); System.out.println(list); } @Test public void testJsonStr2Map(){ Map<?, ?> map = JsonUtil.jsonStr2Map(getFromMap().toString()); System.out.println(map); } @Test public void testJsonStr2ObjectArray(){ Integer[] result = {1,2,3}; Object[] objs = JsonUtil.jsonStr2ObjectArray(JSONArray.fromObject(result).toString()); for(int i=0;i<objs.length;i++){ System.out.println(objs[i]); } } private static User getUser() { User user = new User(); user.setId(11); user.setName("test"); user.setGender(true); user.setPrice(2.7f); return user; } private static List<User> getList() { User user = getUser(); List<User> users = new ArrayList<User>(); for (int i = 0; i < 10; i++) { users.add(user); } return users; } private static JSONArray getFromList() { List<User> users = getList(); return JSONArray.fromObject(users); } public static JSONObject getFromMap() { Map<String, Object> map = new HashMap<String, Object>(); map.put("ua", getUser()); map.put("list", getList()); return JSONObject.fromObject(map); } }
相關推薦
Json字串與java物件互轉
到Json的官網上http://json-lib.sourceforge.net/,下載jar包。在官網也可以看到,使用Json還需要其他的一些jar包,官網上是這樣列的: jakarta commons-lang 2.5 jakarta commons-bea
JSON解析類庫之Fastjson(1) --- Fastjson類庫學習, 生成與解析json資料,json字串與Java物件互轉
JSON解析類庫之Fastjson(1) --- Fastjson基礎知識、簡單JavaBean與複雜Bean物件與JSON互轉 -- Fastjson類庫學習, 生成與解析json資料,json
fastJson中常用JSON字串和Java物件互轉
1.使用fastJson,首先引入fastJson依賴 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba<
Json字串與java物件的互轉
strJson:{"address":"北京市西城區","age":"23","name":"JSON"} strArray:[{"address":"北京市西城區","age":"23","name":"JSON"}] JSON字串--》》java物件上面說明了如何把java物件轉化為JSON字串,下面看如
json與java物件互轉
1、json字串轉JSON物件 //JSON的物件格式的字串 stu = {"name":"JSON","address":"北京市西城區","age":25} //使用net.sf.json包下面的JSONObject JSONObject json = JSONObject.fr
JSON與Java物件互轉 工具類
話不多說,上程式碼~import java.io.Serializable; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier;
xstream--xml工具類--java物件轉換JSONObject、xml與java物件互轉
工作環境: myeclipse2013、jdk1.8、fastjson1.1.41、xstream1.4.3 import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.Writer;
python日期模組datetime常用操作總結(字串與datetime物件互轉、日期差值計算、時間戳獲取、時間陣列生成等)
在python中,自帶的datetime和time兩個時間模組在平時的使用中可以滿足我們絕大多數的需求,但是由於缺乏對這些模組深度的瞭解和使用,導致平時能夠使用到的時間功能十分有限,例如:對於time模組,我的使用幾乎就是停留在程式執行時間的統計和時間戳生成這
Json物件與Json字串的轉化、JSON字串與Java物件的轉換
1.jQuery外掛支援的轉換方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字串轉換成json物件 2.瀏覽器支援的轉換方式(Firefox,chrome,opera,safari
js中處理json Json物件與Json字串的轉化、JSON字串與Java物件的轉換
轉:https://www.cnblogs.com/zq-boke/p/5833387.html Json物件與Json字串的轉化、JSON字串與Java物件的轉換 一.Json物件與Json字串的轉化 1.jQuery外掛支援的轉換方式: $.pars
JSON 字串 與 java 物件的轉換
//json-lib-2.2-jdk15.jar import net.sf.json.JSONArray; import net.sf.json.JSONObject; 1. //把java 物件列表轉換為json物件陣列,並轉為字串 JSONArray array =JSONArray.fr
Json——使用Json jar包實現Json字串與Java物件或集合之間的互相轉換
總結一下利用Json相關jar包實現Java物件和集合與Json字串之間的互相轉換: 1、建立的User類:package com.ghj.packageofdomain; public class User { private int
元件使用總結:使用 JAXB 實現 XML檔案和java物件互轉
JAXB JAXB:實現xml和java物件互轉 JAXB是一個業界的標準,實現XML檔案和Java物件的互轉。 JAXB是JDK 的組成部分。我們不需要下載第三方jar包 即可做到輕鬆轉換。 複製程式碼 重要類和介面: ○ JAXBContext類,是應用的入口,用於管理XML/Java繫結資訊。
Json字串與Object物件相互轉換的幾種方式
Json-Lib、Org.Json、Jackson、Gson、FastJson五種方式轉換json型別 只列舉了最省事的方式。不涉及複製情況和速度。 測試用例,一個User類,屬性name,age,location。重寫toString()。 public class User {
JSON字串和list集合互轉
谷歌的Gson.jar: //list轉換為json Gson gson = new Gson(); List<Person&g
javax.xml + java.io xml和java物件互轉工具類
import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshall
JSON資料與Java物件相互轉換
整理下json資料與Java物件轉換。 使用的jar包: ClassGrade類: import java.util.ArrayList; import java.util.List; public class ClassGrade { private String
JAXB實現XML和java物件互轉以及soapXml和物件互轉需要注意的地方
public class JaxbXmlUtil { private static final String DEFAULT_ENCODING = "UTF-8"; /** * pojo轉換成xml 預設編碼UTF-8 */ public static
yaml檔案與java bean互轉
轉載至 https://segmentfault.com/a/1190000007743290 yaml格式 name: demo desc: this is desc items: - name: item desc: item desc
XML字串與MAP格式互轉
/** * XML格式字串轉換為Map * * @param strXML XML字串 * @return XML資料轉換後的Map * @thro