用Jackson進行Java JSON處理

JSON (Javascript對象符號)正成為一種非常流行的數據交換格式。 在使用諸如YUI,ExtJS,DOJO等Javascript框架開發Web應用程序時,我們可以使用XML或JSON在客戶端和服務器之間交換數據。 通常,我們從服務器獲得有關Java對象的響應。 然后,在Servlet或Action類中,我們需要從對象構建JSON并將其發送回客戶端。 要從Java對象構建JSON響應,我們可以使用非常易于使用的Jackson Java JSON Processor 。

讓我們看看如何使用Jackson Java JSON Processor將Java對象轉換為JSON,反之亦然。 我們可以從Jackson下載頁面下載jackson-all-1.6.4.jar。

進行編組和解組的關鍵類是org.codehaus.jackson.map.ObjectMapper 。

讓我們創建一個User java bean,如下所示:

package com.sivalabs.json;
import java.util.Date;public class User {private String userId;private UserName userName;private Date dob;@Overridepublic String toString(){return "User [dob=" + dob + ", userId=" + userId + ", userName="+ userName + "]";}//setters and getters}
package com.sivalabs.json;
public class UserName {private String firstname;private String middlename;private String lastname;@Overridepublic String toString(){return "UserName [firstname=" + firstname + ", lastname=" + lastname+ ", middlename=" + middlename + "]";}//setters and getters
}

現在讓我們創建一個User實例并將其編組為JSON:

ObjectMapper mapper = new ObjectMapper();UserName userName = new UserName();
userName.setFirstname("Katamreddy");
userName.setMiddlename("Siva");
userName.setLastname("PrasadReddy");User user = new User();
user.setUserId("1");
user.setUserName(userName);
user.setDob(new Date());Writer strWriter = new StringWriter();
mapper.writeValue(strWriter, user);
String userDataJSON = strWriter.toString();
System.out.println(userDataJSON);

這將以JSON格式將用戶數據打印為:

{
“ userId”:“ 1”,
“用戶名”: { “名字”:“ Katamreddy”, “中間名”:“ Siva”, “姓氏”:“ PrasadReddy” }, “ dob”:1300878089906 }

現在,讓我們將json格式的以下用戶數據編組為User Object:

{
“ userId”:“ 100”,
“用戶名”: { “ firstname”:“ K”, “中間名”:“ Siva”, “ lastname”:“ Prasad” }, “ dob”:1300878089906 }

String userDataJSON = 
"{\"userId\":\"100\",\"userName\":{\"firstname\":\"K\""+
",\"middlename\":\"Siva\",\"lastname\":\"Prasad\"},\"dob\":1300878089906}";
User userFromJSON = mapper.readValue(userDataJSON, User.class);
System.out.println(userFromJSON);

這會將User對象打印為:

用戶[dob = 3月23日星期三16:31:29 IST 2011,userId = 100,userName = UserName [firstname = K,lastname = Prasad,middlename = Siva]]

日期值被編組為時間戳,這是默認行為。 如果需要,可以如下更改DateFormat:

DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
SerializationConfig serConfig = mapper.getSerializationConfig();
serConfig.setDateFormat(dateFormat);
DeserializationConfig deserializationConfig = mapper.getDeserializationConfig();
deserializationConfig.setDateFormat(dateFormat);
mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);

然后,用戶JSON將為:

{
“ userId”:“ 1”,“ userName”:
{ “名字”:“ Katamreddy”, “中間名”:“ Siva”, “姓氏”:“ PrasadReddy” }, “ dob”:“ 2011年3月23日” }

我們還可以將Java對象作為json編組為文件,如下所示:

mapper.writeValue(new File("user.json"), user);

這將創建文件user.json為:

{
“ userId”:“ 100”,
“用戶名”: { “ firstname”:“ K”, “中間名”:“ Siva”, “ lastname”:“ Prasad” }, “ dob”:1300878089906 }

我們可以從user,json構建User對象,如下所示:

User user = mapper.readValue(new File("user.json"), User.class);

參考:來自我們JCG合作伙伴Siva Prasad Reddy的 使用Jackson Java JSON Processor的JSON處理 。

相關文章:

  • 使用Gson教程進行Android JSON解析
  • 將JSON功能添加到您的GWT應用程序中
  • Tomcat 7上具有RESTeasy JAX-RS的RESTful Web服務-Eclipse和Maven項目
  • Spring3 RESTful Web服務

翻譯自: https://www.javacodegeeks.com/2011/03/java-json-processing-jackson.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374605.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374605.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374605.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android Togglebutton 默認背景被放大

1 . 最近在項目中自定義toggleButton 發現背景圖放入后 ,比美工給我的原圖要大很大 2. 為什么? 3.比較ToggleButton 和TextView源碼 發現, toggleButton 設置了minWidth 和minHeigh ,導致我的背景小圖被拉伸。 4.解決這種問題: 重…

MapReduce:簡單介紹

MapReduce是Google流行的一種并行編程技術。 它用于處理大量數據。 僅通過將工作并行分配給多臺機器,就可以在合理的時間內完成這種處理。 每臺機器都處理一小部分數據。 MapReduce是一種編程模型,使開發人員可以專注于編寫處理數據的代碼,而…

python翻譯詞典實例

#!/usr/bin/python # -*- coding:utf-8 -*- #通過有道翻譯來進行內容翻譯 import urllib2 import urllib import json #---------翻譯方法定義 start---------# def transfer( transferStr , lanSource auto ): data {type:lanSource,i:transferStr,doctype:json,xmlVersion:1…

元素分類--塊級元素(特點:獨占一行, 寬高邊距可改)

什么是塊級元素&#xff1f;在html中<div>、 <p>、<h1>、<form>、<ul> 和 <li>就是塊級元素。設置display:block就是將元素顯示為塊級元素。如下代碼就是將內聯元素a轉換為塊狀元素&#xff0c;從而使a元素具有塊狀元素特點。 a{display:b…

Java應用程序中的消息傳遞主體

消息傳遞是每個Java應用程序的關鍵方面&#xff0c;尤其是對于涉及企業應用程序集成&#xff08;EAI&#xff09;或關注點分離的應用程序&#xff0c;例如多層WEB應用程序。 消息傳遞可以分為兩個主要類別&#xff0c;即同步和異步。 另一方面&#xff0c;使用同步消息傳遞時&…

站立會議05(第二次沖刺)

一、站立會議信息&#xff08;配站立會議照片&#xff09; 第五天我們繼續開發&#xff0c;把注冊驗證信息完善一下&#xff0c;將開始網站公共主頁的開發。 二、任務進度 第五天我們注冊驗證完成。 三、任務看板&#xff08;圖&#xff09; 四、燃盡圖&#xff08;圖&#xff…

[SoapUI] DataSource, DataSourceLoop, DataSink

Script assertion in login: 轉載于:https://www.cnblogs.com/MasterMonkInTemple/p/4748189.html

1154. 一年中的第幾天

給你一個字符串 date &#xff0c;按 YYYY-MM-DD 格式表示一個 現行公元紀年法 日期。請你計算并返回該日期是當年的第幾天。 通常情況下&#xff0c;我們認為 1 月 1 日是每年的第 1 天&#xff0c;1 月 2 日是每年的第 2 天&#xff0c;依此類推。每個月的天數與現行公元紀年…

將CAPTCHA添加到您的GWT應用程序

什么是驗證碼&#xff1f; 在一個充滿惡意機器人的世界中&#xff0c;您該怎么做才能保護您寶貴的Web應用程序&#xff1f; 您真正應該做的基本事情之一就是向其中添加CAPTCHA功能。 如果您不熟悉&#xff08;聽起來有些奇怪&#xff09;&#xff0c;則CAPTCHA是確保用戶實際上…

SQL基礎語句

數據庫面試常見題 一、SQL語言包括數據定義語言、數據操作語言、數據控制語言和事務控制語言1&#xff1a;DDL(Data Definition Language)&#xff0c;是用于描述數據庫中要存儲的現實世界實體的語言。 CREATE TABLE - 創建新表 ALTER TABLE - 變更&#xff08;改變&#xff0…

YYModel Summary

YYModel Effect-> YYModel的作用Provide some data-model method—>提供一些數據模型的方法Convert json to any object, or convert any object to json.->對任何對象轉換成JSON&#xff0c;和對任何JSON轉換為對象Set object properties with a key-value dictionar…

iOS學習——ScrollView圖片輪播和同類控件優先級問題

iOS學習——ScrollView的使用和同類控件優先級問題 1. 布置界面 ScrollView的使用非常簡單&#xff0c;只有三步 1.1 添加一個scrollview 1.2 向scrollview添加內容 1.3 告訴scrollview中內容的實際大小 首先做第一步&#xff0c;布置界面。 拖拽一個scrollview就可以了 就…

Exchanger和無GC的Java

總覽 Exchanger類在線程之間傳遞工作和回收使用的對象方面非常有效。 AFAIK&#xff0c;它也是最少使用的并發類之一。 但是&#xff0c;如果您不需要GC&#xff0c;則使用ArrayBlockingQueue進行日志記錄會更簡單。 交換器類 Exchanger類對于在兩個線程之間來回傳遞數據很有…

構造函數的反射

1 import java.lang.reflect.Constructor;2 3 public class zzbds {4 public static void main(String[] args) {5 6 try{ 7 Class cStudent.class; //獲得無參構造函數8 Constructor constructorc.getConstructor(new Class[]{…

字符串連接“+”int、char、string

String s1 "21" "8" "54";System.out.println(s1);String s2 "21" 8 "54";System.out.println(s2);String s3 "21" 8 "54";System.out.println(s3);21854 21854 21854

使用Spring使用Java發送電子郵件– GMail SMTP服務器示例

對于使用Java發送電子郵件&#xff0c; JavaMail API是標準解決方案。 如官方網頁所述&#xff0c;“ JavaMail API提供了獨立于平臺和協議的框架來構建郵件和消息傳遞應用程序”。 必需的類包含在JavaEE平臺中&#xff0c;但是要在獨立的JavaSE應用程序中使用它&#xff0c;您…

Java字符與數字的計算

先看例子&#xff1a; char ch;int x;int y 7;System.out.print("7的ASCII碼值是&#xff1a;");System.out.println(y);ch 7 2;System.out.print("7 2的char型&#xff1a;");System.out.println(ch);x 7 2;System.out.print("7 2的int型&…

wordcount

源代碼如下 package org.apache.hadoop.examples; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io…

EJB 3.1全局JNDI訪問

如本系列前面的部分所述&#xff0c;EJB 3.0版規范的主要缺點是缺少可移植的全局JNDI名稱。 這意味著沒有可移植的方式將EJB引用鏈接到應用程序外部的Bean。 EJB v。3.1規范用自己的話填補了這一定義&#xff1a; “一個標準化的全局JNDI名稱空間和一系列相關的名稱空間&#…

Git 分支管理和沖突解決

創建分支 git branch 沒有參數&#xff0c;顯示本地版本庫中所有的本地分支名稱。 當前檢出分支的前面會有星號。 git branch newname 在當前檢出分支上新建分支&#xff0c;名叫newname。 git checkout newname 檢出分支&#xff0c;即切換到名叫newname的分支。 git checkout…