`
yang2617
  • 浏览: 28778 次
社区版块
存档分类
最新评论

java操作json

    博客分类:
  • json
阅读更多
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

java操作json所依赖的jar包有很多种.这里我使用的是jackson.
首先给出两个javaBean.一个简单类型User和一个相对复杂类型Grade.

User:
package com.supben.bean;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

@XStreamAlias("user")
public class User {

	// id
	@XStreamAsAttribute
	private long id;

	// 姓名
	private String name;

	// 年龄
	private int age;

	// 绝技
	private String famous;

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getFamous() {
		return famous;
	}

	public void setFamous(String famous) {
		this.famous = famous;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + "age=" + age + ", famous=" + famous + "]";
	}

}


Grade
package com.supben.bean;

import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("grade")
public class Grade {

	// id
	private long id;
	
	// 名称
	private String name;
	
	// 用户集合
	private List<User> users;

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public List<User> getUsers() {
		return users;
	}

	public void setUsers(List<User> users) {
		this.users = users;
	}
	
	@Override
	public String toString() {
		return "Grade [id=" + id + ", name=" + name + ", users=" + users + "]";
	}


}


jackson为我们很好的封装了ObjectMapper类.可以很方便的对json进行读和写.

package com.supben.json;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.codehaus.jackson.map.ObjectMapper;

public class JsonHandler {
	
	/**
	 * 将对象以json的形式输出
	 */
	public static void writeToJson(Object obj, OutputStream os) throws Exception{
		ObjectMapper mapper = new ObjectMapper();
		mapper.writeValue(os, obj);
		os.close();
	}
	
	
	/**
	 * 从json中读到对象中
	 */
	public static void readFromJson(InputStream is, Object obj) throws IOException {
		ObjectMapper mapper = new ObjectMapper();
		mapper.readValue(is, obj.getClass());
		is.close();
	}
	
}


下面我们就对这两个方法进行测试.

@Test
	public void writeUser() throws Exception {
		User qf = new User();
		qf.setId(1);
		qf.setName("乔峰");
		qf.setAge(31);
		qf.setFamous("降龙十八掌");

		OutputStream os = new FileOutputStream("d:/qf.json");
		JsonHandler.writeToJson(qf, os);
	}
	

我们会在D盘得到一个qf.json的文件.用记事本打开显示如下内容:
{"age":31,"famous":"降龙十八掌","name":"乔峰","id":1}

@Test
	public void writeGrade() throws Exception {
		List<User> users = new ArrayList<User>();

		User qf = new User();
		qf.setId(1);
		qf.setName("乔峰");
		qf.setAge(31);
		qf.setFamous("降龙十八掌");

		User dy = new User();
		dy.setId(1);
		dy.setName("段誉");
		dy.setAge(20);
		dy.setFamous("六脉神剑");

		User xz = new User();
		xz.setId(1);
		xz.setName("虚竹");
		xz.setAge(24);
		xz.setFamous("天山六阳掌");

		users.add(qf);
		users.add(dy);
		users.add(xz);

		Grade grade = new Grade();
		grade.setId(1);
		grade.setName("天龙八部");
		grade.setUsers(users);
		OutputStream os = new FileOutputStream("d:/grade.json");
		JsonHandler.writeToJson(grade, os);
	}


同样,在D盘得到grade.json.用记事本打开,
{"users":[{"age":31,"famous":"降龙十八掌","name":"乔峰","id":1},{"age":20,"famous":"六脉神剑","name":"段誉","id":1},{"age":24,"famous":"天山六阳掌","name":"虚竹","id":1}],"name":"天龙八部","id":1}

下面我们在来读取grade.json里面的内容.

@Test
	public void readeGrade() throws Exception {
		Grade grade = new Grade();
		InputStream is = new FileInputStream("d:/grade.json");
		JsonHandler.readFromJson(is, grade);
		System.out.println(grade);
	}
分享到:
评论

相关推荐

    使用Java操作JSON字符串对象

    使用Java操作JSON字符串对象,使用Java操作JSON字符串对象

    java操作JSON的例子

    首先,Java操作JSON通常依赖于第三方库,如Jackson、Gson或org.json等。在这个例子中,我们使用的可能是`org.json`库,因为这个库提供了简单的API来进行JSON的解析和生成。`jar包在根目录JavaSocket文件夹bin下`提示...

    JAVA操作JSON全套包,无需另外下载一次搞定

    综上所述,这个Java操作JSON的全套工具包包含了从JSON数据的序列化、反序列化、类型转换到日志记录等一系列功能,为开发者提供了便利和效率。使用这些库,开发人员可以更轻松地处理JSON数据,无论是从Web服务接收...

    Java操作JSON入门教程

    Java操作JSON入门教程

    java操作json的通用类

    在这个主题中,我们将深入探讨如何通过Java操作JSON,基于提供的文件名,我们可以推断出以下知识点: 1. **JsonUtil.java** - 这个文件通常会包含一系列静态方法,用于处理JSON的序列化和反序列化。例如,将Java...

    java操作json的类库 google-gson

    Java操作JSON的类库Google-Gson是开发人员在处理JSON数据时的一个强大工具。它以其稳定性和易用性而闻名,被广泛应用于各种Java项目中。Google-Gson库允许我们将Java对象转换为JSON字符串,反之亦然,极大地简化了...

    java操作json全jar包

    import java.util.Iterator; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class TestJson { public static void main(String[] args) { String gg = "{\"name\":[\"啦啦\",\"哈哈\...

    java操作json的几个必需jar包

    在标题和描述中提到的“java操作json的几个必需jar包”,指的是Java开发中用于解析和生成JSON的库。下面我们将详细介绍这些库以及如何使用它们。 1. **Jackson** Jackson是Java中最常用的JSON库之一,由 FasterXML...

    java操作json的例子

    JSON(JavaScript Object Notation)是...通过实际操作提供的PPT和代码示例,相信你将对Java操作JSON有更深入的理解,并能自如地运用在项目中。记得实践是检验真理的唯一标准,动手尝试这些例子,你的技能将得到提升。

    java操作JSON数据

    本篇文章将深入探讨如何使用Java操作JSON数据,结合提供的`JsonData.java`源码和可能用到的jar文件。 首先,让我们了解JSON的基本结构。JSON数据通常由键值对组成,键是字符串,而值可以是各种数据类型,包括字符串...

    java操作json通用类以及所需jar包

    Java操作JSON的核心在于使用相关的库来解析、生成和操作JSON对象。本篇将详细讲解如何在Java中处理JSON,以及如何使用提供的jar包。 首先,Java处理JSON主要依赖于第三方库,如Jackson、Gson、org.json或json-...

    java操作JSON.zip

    总的来说,Java操作JSON时,可以根据项目需求选择合适的库。org.json简单易用,适合轻量级应用;Gson提供了丰富的特性,尤其在处理复杂Java对象时表现出色;Jackson则在性能和功能上都十分强大,是大型项目或对性能...

    Java操作JSON入门教程.pdf

    Java操作JSON入门教程.pdfJava操作JSON入门教程.pdf

    java操作json实例

    总结,Java中的JSON操作涉及创建、解析JSON对象,访问JSON节点,映射到Java集合,以及处理嵌套结构。Jackson库提供了一套强大且灵活的工具,使得这些操作变得简单易行。在实际开发中,理解并熟练运用JSON处理技术...

    Java 读取、添加、删除修改json文件数据范例.rar

    Java 操作json文件的例子,对json数据进行读娶添加、删除、修改等操作,下载源码后,重点参见JsonConvert.java文件,  读取nameID.txt文件中的NAMEID字段(key)对应值(value)并存储,读取NAMEID对应值,读取原始...

    java 操作json之一 操作org.json包

    本文将详细介绍如何使用`org.json`包来操作JSON数据,这个包是Java中一个简单易用的库,由Douglas Crockford开发。 首先,`org.json`包提供了几种主要的对象类型,包括`JSONObject`、`JSONArray`、`JSONString`、`...

    JAVA操作Json的最好的类库最新版jackson 2.7.1

    Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。 为什么推荐Jackson呢,主要原因: 1、按性能比较,Jackson &gt; Gson &gt; Json-lib。Jackson的处理能力甚至高出Json-lib有...

Global site tag (gtag.js) - Google Analytics