Jackson的使用(json解析)
Jackson:高效能的JSON處理,處理json速度快。
Jackson可以輕鬆的將Java物件轉換成json字串和xml文件,同樣也可以將json字串、xml轉換成Java物件。
程式碼如下:
實體模型:package com.example.administrator.jsckson.ui; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.util.Log; import com.example.administrator.jsckson.R; import com.example.administrator.jsckson.entity.Name; import com.example.administrator.jsckson.entity.Student; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created on 2017/5/4. * Author:crs * Description:測試jackson */ public class TestJacksonActivity extends AppCompatActivity { private static final String TAG ="TestJacksonActivity" ; private Student student1; private ArrayList<Student> list; private HashMap<String, Student> map; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_jackson); /** * 1)JSON屬於序列化與反序列化的內容 * 2)資料傳輸速度,資料解析速度 * 3)常用的json解析框架,以及一些配置 */ initData(); ObjectMapper mapper=getDefaultObjectMapper(); try { //1)序列化物件 Object---->String String s = mapper.writeValueAsString(student1); Log.i(TAG,s); //2)序列化集合 list---->String String s1 = mapper.writeValueAsString(list); Log.i(TAG,s1); //3)序列化集合 map---->String String s2 = mapper.writeValueAsString(map); Log.i(TAG,s2); //4)反序列化 json---->Object(這個應該是最常用的) Student jsonToObject = mapper.readValue(s, Student.class); Log.i(TAG,jsonToObject.toString()); //5)反序列化 json---->List List<Student> jsonToList = mapper.readValue(s1, new TypeReference<List<Student>>() {}); Log.i(TAG,jsonToList.toString()); //6)反序列化 json---->map Map<String,Student> jsonToMap = mapper.readValue(s2, new TypeReference<Map<String,Student>>() {}); Log.i(TAG,jsonToMap.toString()); } catch (Exception e) { e.printStackTrace(); } } private static ObjectMapper getDefaultObjectMapper() { /** * ObjectMapper是JSON操作的核心類,Jackson的所有JSON操作都是在ObjectMapper中實現。 * ObjectMapper有多個JSON序列化的方法,可以把JSON字串儲存File、OutputStream等不同的介質中。 * writeValueAsString(Object arg0)把arg0轉成json序列,並把結果輸出成字串。 * JSON註解 Jackson提供了一系列註解,方便對JSON序列化和反序列化進行控制. */ ObjectMapper mapper = new ObjectMapper(); //1)設定將物件轉換成JSON字串時候(序列化時);序列化與反序列化。//如果物件的屬性為null或者“”,此屬性不在進行序列化 mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); //JsonInclude.Include.NON_NULL;屬性為NULL 不序列化 //JsonInclude.Include.ALWAYS ;預設 //2)設定有屬性不能對映時不報錯 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true); mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true); //3)不能包含ASCII碼 mapper.configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, true); //4)設定轉換時的時間格式 mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); return mapper; } private void initData() { //準備資料,建立物件 Name name1 = new Name("陳詩音", "音"); Name name2 = new Name("陳詩樂", "樂"); Name name3 = new Name("陳隨心", "心"); student1 = new Student(1,name1,"語文",new Date()); Student student2 = new Student(2,name2,"數學",new Date()); Student student3 = new Student(3,name3,"英語",new Date()); list = new ArrayList<>(); list.add(student1); list.add(student2); list.add(student3); map = new HashMap<>(); map.put("1", student1); map.put("2",student2); map.put("3",student3); } }
package com.example.administrator.jsckson.entity; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Date; /** * Created on 2017/5/4. * Author:crs * Description:模型類student */ public class Student { @JsonIgnore //此註解用於屬性上,作用是進行JSON操作時忽略該屬性。 private int id; @JsonProperty("firstName")//此註解用於屬性上,作用是把該屬性的名稱序列化為另外一個名稱,如把Name屬性序列化為firstName private Name name;//沒有使用內部類 private String className; @JsonFormat(pattern = "yyyy年MM月dd日") //格式化日期屬性 private Date birthDay; public Student(int id, Name name, String className, Date birthDay) { this.id = id; this.name = name; this.className = className; this.birthDay = birthDay; } public int getId() { return id; } public void setId(int id) { this.id = id; } public Name getName() { return name; } public void setName(Name name) { this.name = name; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public Date getBirthDay() { return birthDay; } public void setBirthDay(Date birthDay) { this.birthDay = birthDay; } @Override public String toString() { return "Student{" + "id=" + id + ", name=" + name + ", className='" + className + '\'' + ", birthDay=" + birthDay + '}'; } }
相關推薦
[轉] 各種Json解析工具比較 - json-lib/Jackson/Gson/FastJson
config 1.2 content pretty 接口實現 turn sso processor true JSON技術的調研報告一 、各個JSON技術的簡介和優劣1.json-libjson-lib最開始的也是應用最廣泛的json解析工具,json-lib 不好的地方確
Java:JSON解析利器JackSon
ice ota 註解 repr eval bit version write cti Java:JSON解析利器JackSon JackSon基礎 1.Maven項目引入 <!-- https://mvnrepository.com/artifact/org.cod
Jackson JSON對日期格式的解析設定
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Java中使用Jackson進行JSON解析和序列化
Java中使用Jackson進行JSON解析和序列化 1.新增依賴,在Maven的pom.xml檔案中新增以下依賴 <dependency> <groupId>com.fasterxml.jackson.core</groupId>
Android-json解析(二):Jackson的使用
使用Jackson,主要是使用writeValueAsString和readValue這兩個方法。此外,Jackson的writeValue和readValue有很多種引數型別,適用於多中場合。 1、匯入依賴 compile 'com.faste
關於使用jackson.jar解析JSON時,大寫JSON key值發生報錯的問題
最近在專案中呼叫.NET的服務時,Jackson在解析返回的json字串時始終報錯,糾結很久之後才找到原因,原來是是由於json字串中的字母都是首字母大寫,導致jackson找不到相應的KEY。 解決方法有兩種: 直接將bean物件中的屬性改為public
Java下利用Jackson進行JSON解析和序列化
Java下常見的Json類庫有Gson、JSON-lib和Jackson等,Jackson相對來說比較高效,在專案中主要使用Jackson進行JSON和Java物件轉換,下面給出一些Jackson的JSON操作方法。 一、準備工作 首先去官網下載Jackson工具包,
android:json解析的兩個工具:Gson和Jackson的使用小例子
1.簡介 json是android與伺服器通訊過程中常用的資料格式,例如,如下是一個json格式的字串: {"address":"Nanjing","name":"NUPT","students":[{"name":"stu1","id":"10000","ag
Jackson的使用(json解析)
Jackson:高效能的JSON處理,處理json速度快。 Jackson可以輕鬆的將Java物件轉換成json字串和xml文件,同樣也可以將json字串、xml轉換成Java物件。 程式碼如下: package com.example.administrator.jsc
jackson框架解析json
Jackson解析的速度算是同類框架中最快的,同時也是Spring MVC中內建使用的解析方式。 準備工作: 並將jar包新增到libs中 package com.example.jacksontest; import org.codehaus.jackson
json解析效能比較(gson與jackson)
現在json的第三方解析工作很多,如json-lib,gson,jackson,fastjson等等。在我們完成一般的json-object轉換工作時,幾乎都沒有任何問題。但是當資料的量上來時,他們的效能幾何呢?我著手測試了一下gson和jackson,其他的如json-l
Json解析工具Jackson(使用註解)
接上一篇文章Json解析工具Jackson(簡單應用),jackson在實際應用中給我們提供了一系列註解,提高了開發的靈活性,下面介紹一下最常用的一些註解 @JsonIgnoreProperties 此註解是類註解,作用是json序列化時將Java bean
比Gson解析速度快10倍!——Json解析神器Jackson使用介紹
在前面的兩篇文章中,我們介紹了Json資料格式和系統自帶Json以及Google的Gson專案,如果能學會這些東西,基本能滿足工作需求了。但是,程式設計師都有追求極致效率的嗜好,在滿足了基本需求之後,我們會考慮能不能再優化一下效率呢?當然!今天這篇文章要介
Spring MVC4設定使用fastjson作為json解析器,替代jackson
不論是效能、易用性、特性支援,fastjson都要遠好於預設的jackson,所以如果應用程式經常使用ajax進行資料互動,建議用fastjson作為預設解析器,官網:www.fhadmin.org只需要簡單配置: <mvc:annotation-driven> <mvc:mes
常用有三種json解析jackson、fastjson、gson。
http ann -- https 解析 enc clas rep depend jackson依賴包 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson
COCOS2D - JS 之JSON 解析
ack 構建 padding ott esp for ++ style blog list 類型的json數據 var source = ["10004","1234","4","3","1.5","0.5"] var res= JSON.parse(so
Swift4 JSON解析
反向 toc 多層嵌套 反向解析 right json pan 快捷 proto 說起來,Swift4提供了兩個類(JSONEncoder, JSONDecoder)用於JSON的序列化和反序列化, 嘗試了下,可以將自定義對象(允許多層嵌套)轉換成JSON data 也可以
Android Json解析Kotlin
style any ray code 鍵值 first aaa use text 1. 首先講一下什麽是Json--下面的就是Json基本格式,其實就是一個鍵值對。 { "people": [ { "firstName": "Brett", "lastNam
android json 解析 kotlin
spa hashmap 函數 三方庫 col msg arraylist 字符串 comm 前面 寫了一次 kotlin解析json 但是,真的寫得太爛,直接刪掉了,現在重新整理一下。順便記錄一下今天坑了我很久的小問題。 1.首先從最簡單的入手吧
關於Python json解析過程遇到的TypeError: expected string or buffer
inf 免除 replace 路徑 driver images ret script tro 關於Python json解析過程遇到的問題:(爬取天氣json數據所遇到的問題http://tianqi.2345.com/) part.1 url——http://tianqi