1. 程式人生 > >json與Java物件 轉換的幾種方法

json與Java物件 轉換的幾種方法

package com.yoyohr.bi.bean;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.ArrayList; import java.util.List; import static mondrian.server.MondrianServerRegistry.logger; /** * Created by Administrator on 2017/2/18. */ public class Test { private static String jsonUser ="{\"id\":1,\"name\":\"kexianqin
\"}"; private static String jsonUserArray ="[{\"id\":1,\"name\":\"kexianqin\"},{\"id\":2,\"name\":\"liuchen\"}]"; private final static ObjectMapper objectMapper = new ObjectMapper(); private static final Logger logger = LoggerFactory.getLogger(Test.class); public static void main(String[] args) throws
IOException { logger.info("Test begin........"); /** 使用JavaType方法 */ // JavaType javaType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class,UserT.class); // List<UserT> userList = objectMapper.readValue(jsonUserArray,javaType); // System.out.println(userList); /** TypeReference:可以把json字串轉換成想要的List. 注意readValue()方法裡的new TypeReference<List<UserT>>() { }寫法很關鍵,寫成List.class是不行的, */ // List<UserT> userlist = objectMapper.readValue(jsonUserArray,new TypeReference<List<UserT>>(){});// 若無toString方法:[[email protected], [email protected]] // List userlist2 = objectMapper.readValue(jsonUserArray,new TypeReference<List>() { });// [{id=1, name=kexianqin}, {id=2, name=liuchen}] // System.out.println(userlist); // System.out.println(userlist2); /** 最普通的 */ // UserT user=objectMapper.readValue(jsonUser,UserT.class);//json轉化為UserT類物件 // System.out.print(user.toString()); // String jsonString=objectMapper.writeValueAsString(user);//物件轉化為json // System.out.println(jsonString); /** 類中含類,如cube中包含多個dimension,:{"users":[{"id":3,"name":"kxq"},{"id":4,"name":"lc"}],"dname":"體育經濟Q1241"} */ // UserT user1 = new UserT(); // user1.setId(3); // user1.setName("kxq"); // // UserT user2 = new UserT(); // user2.setId(4); // user2.setName("lc"); // // Department class1=new Department(); // class1.setDname("體育經濟Q1241"); // List<UserT> listUser=new ArrayList(); // listUser.add(user1); listUser.add(user2); // class1.setUsers(listUser); // // String jsonString = objectMapper.writeValueAsString(class1); // System.out.println(jsonString); /** * 呼叫下面的方法<即最終方法> */ System.out.println(decode(jsonUser,UserT.class)); System.out.println(decode(jsonUserArray,new TypeReference<List<UserT>>(){}));//!!!!!!!!!!!!!{ }是幹什麼用的?? <T>與<?> } /** * 將物件序列化 * @param obj * @return */ public static String encode(Object obj) { try { return objectMapper.writeValueAsString(obj); } catch (JsonGenerationException e) { logger.error("encode(Object)", e); //$NON-NLS-1$ } catch (JsonMappingException e) { logger.error("encode(Object)", e); //$NON-NLS-1$ } catch (IOException e) { logger.error("encode(Object)", e); //$NON-NLS-1$ } return null; } /** * 將json string反序列化成物件 * * @param json * @param valueType * @return */ public static <T> T decode(String json, Class<T> valueType ) { try { return objectMapper.readValue(json, valueType); } catch (JsonParseException e) { logger.error("decode(String, Department<T>)", e); } catch (JsonMappingException e) { logger.error("decode(String, Department<T>)", e); } catch (IOException e) { logger.error("decode(String, Department<T>)", e); } return null; } /** * 將json array反序列化為物件 * * @param json * @param jsonTypeReference * @return */ public static <T> T decode(String json, TypeReference<T> jsonTypeReference) { try { return (T) objectMapper.readValue(json, jsonTypeReference); } catch (JsonParseException e) { logger.error("decode(String, JsonTypeReference<T>)", e); } catch (JsonMappingException e) { logger.error("decode(String, JsonTypeReference<T>)", e); } catch (IOException e) { logger.error("decode(String, JsonTypeReference<T>)", e); } return null; } }

相關推薦

jsonJava物件 轉換方法

package com.yoyohr.bi.bean; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.core.JsonParseExcepti

JSONJava物件的互相轉換

JSON與Java物件的互相轉換 例一(單個物件進行賦值): @RequestMapping("test1.do") @ResponseBody public JSONObject test1(HttpServletRequest request, HttpServletResponse

Java建立物件方法

有時候,也可能碰到這樣面試題,如: Java建立物件有哪幾種方法? 除了new之外,java建立物件還有哪幾種方式? 本文結合例子,給出幾種Java建立物件的方法,Here we go~~~~ 使用new建立 這是最常用的一種。如: Book b

判斷物件是否為空物件方法

1.將json物件轉化為json字串,再判斷該字串是否為"{}" var data = {}; var b = (JSON.stringify(data) == "{}"); alert(b);//true 2.for in 迴圈判斷 var obj = {

js判斷物件是否為空物件方法

1.將json物件轉化為json字串,再判斷該字串是否為"{}" var data = {}; var b = (JSON.stringify(data) == "{}"); alert(b);//true 2.for in 迴圈判斷 var obj = {}; var

Unity之查詢物件方法

GameObject.FindObjectsOfType(typeof(型別)) as 型別[];  GameObject.FindObjectsOfType<型別>(); GameObject.FindObjectsOfTypeAll(typeof(型別[]))as 型別[];此方法在新版本

MongoDB儲存Java物件的三方法

MongoDB有三種方法來儲存java物件,一種是通過類實現DBObject介面,一種是利用spring-mongodb工具的物件對映功能,把java物件轉換成MongoDB的BSON文件,一種是通過序列化類例項,轉成二進位制儲存,MongoDB是支援二進位制的資料格式的

【深度學習】卷積計算訓練模型的方法

卷積計算 全連線層和卷積層的根本區別在於:全連線層(Dense層)從輸入空間中學到的是全域性模式,而卷積層學到的是區域性模式。 因為這個特性,所以卷積神經網路有兩個有趣的性質: 平移不變性:卷積神經網路在影象右下角學到的某個模式,它可以在任何地方識別出來這個模式;而對

jsonjava物件互轉

1、json字串轉JSON物件 //JSON的物件格式的字串 stu = {"name":"JSON","address":"北京市西城區","age":25} //使用net.sf.json包下面的JSONObject JSONObject json = JSONObject.fr

redis 儲存自定義java物件方式

最近去面試,碰到面試官提問,如果要把一個自定義的java物件儲存到redis中,除了一般使用json和序列化之外,還有一種,可以配置redis的配置檔案,操作hash型別,直接使用HGETALL (或

java寫入檔案方法

  在java中我常用的向檔案中寫入新內容的三種方法,分別是FileWritter,BufferedWriter ,FileOutputStream下面我分別給各位介紹三個例項希望對你有所幫助。   一,FileWritter寫入檔案   FileWritter, 字元流寫

JS--自定義物件方法

Sam Stephenson寫的Prototype JavaScript framework, 最基本的:建構函式&&實名方法[code] //定義MyObject物件 function MyObject() {} function sum(a, b){ret

將類陣列物件轉化成陣列物件方法

今天遇到一個問題,發現在操作類陣列物件時特別不方便,於是就想到能否將類陣列物件轉化成陣列物件,然後再利用陣列物件強大又便捷的方法來操作呢?然後...然後在尋找解決方法的時候我就被自己蠢哭了...事情是這樣發展的: 一、Array.prototype.slice.call(a

利用Spring建立javaBean物件方法

3種方法如下: 1.用構造器來例項化的方式 2.利用靜態工廠方法例項化的方式。 3.利用例項工廠方法例項化的方式。 小案例: 利用Spring呼叫構造器GregrianCalendar 建立Calendar例項。 利用Spring呼叫Calendar的靜態工廠方法getIn

jsonjava物件轉換

常用的三種方式:具體用法百度 1 json-lib :JSONObject、JSONArray 2 Gson: toJson(); fromJson(); 3 Jackson: ObjectMap

JSONJava物件互轉 工具類

話不多說,上程式碼~import java.io.Serializable; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier;

.Net Core實戰教程(二):設置Kestrel的IP端口的方法

comm 代碼 lec 配置文件 path 端口 img startup ner .Net Core實戰教程(二):設置Kestrel的IP與端口的幾種方法 1.直接寫在代碼方式 Program.cs代碼如下: using System; using System.Col

java中有方法可以實現一個執行緒?用什麼關鍵字修飾同步方法 stop()和suspend()方法為何不推薦使用?

java5以前,有兩種實現方法,分別使用new Thread()和new Thread(runnable)形式,第一種繼承Thread類,直接呼叫thread的run方法,所以,我們往往使用Thread子類,即new SubThread()。第二種是實現Runn

【Android View事件(四)】View滑動實現滑動的方法

1 前言 在前面的幾篇文章,我向大家介紹的都是單一View事件,而在這篇文章中,我將向大家介紹連續的事件 —— 滑動。 在安卓裝置上滑動幾乎是應用的標配,由於安卓手機螢幕較小,為了給使用者呈現更多的內容,就需要使用滑動來隱藏和顯示一些內容。

java中有方法可以實現一個執行緒?用什麼關鍵字修飾同步方法? stop()和suspend()方法為何不推薦使用?

java5以前,有如下兩種: 第一種: new Thread(){}.start();這表示呼叫Thread子類物件的run方法,new Thread(){}表示一個Thread的匿名子類的例項物件,子類加上run方法後的程式碼如下: new Thread(){ publi