用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.mzph.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…