`

Java解析JSON数据

 
阅读更多

前面介绍了XML的几种解析方法,可以看到,XML格式的数据本身比较重量级,虽然逻辑层次分明,但如果传输一些简单的数据,可能会消耗更多的网络带宽,因此,本博文将介绍一种更加轻量级的数据传输格式——JSON数据。

 

一、JSON的介绍

(一)简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#Java、JavaScript、PerlPython等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

 

(二)语法规则

JSON 语法是 JavaScript 对象表示语法的子集。

       数据在键值对中

       数据由逗号分隔

       花括号保存对象

       方括号保存数组

实例:

(1)名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:

“userName” : "Bill"

(2)一条完整的json数据

{"userPwd":"123","userName":"Bill","age":22}

(3)多条json数据进行传输的格式,即[{},{},{}],一个{}表示一条完整的json数据

[{"userPwd":"123","userName":"Bill","age":22},{"userPwd":"234","userName":"Tom","age":21},{"userPwd":"345","userName":"John","age":23}]

 

(三)JSON数据与Java类

从上可以看出,一条json数据是有多个键值对组成的,所以可以将该键值对作为java类的字段,这样在解析的时候可以将其保存起来,如上述中可以提炼出每条json数据都有userName,userPwd,age。因此可以将这三个属性作为Java类,如User的三个字段即可。

 

二、利用Java创建JSON数据

 很多时候,JSON数据都是用来传输数据,所以json当中的每个字段多是动态生成的,这里,假设我们需要传输几个User对象,每个User有userName,userPwd,age三个字段。所以首先需要创建一个User模型类

(一)创建User.java,用于保存一条json数据的键值

/**
 * 保存用户数据的模型类
 * 
 * @author Bill56
 *
 */
public class User {

	// 用户名
	private String userName;

	// 密码
	private String userPwd;

	// 年龄
	private int age;

	/**
	 * 不带形参的构造方法
	 */
	public User() {
		super();
	}

	/**
	 * 带参数的构造方法
	 * 
	 * @param userName
	 *            用户名
	 * @param userPwd
	 *            密码
	 * @param age
	 *            年龄
	 */
	public User(String userName, String userPwd, int age) {
		super();
		this.userName = userName;
		this.userPwd = userPwd;
		this.age = age;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserPwd() {
		return userPwd;
	}

	public void setUserPwd(String userPwd) {
		this.userPwd = userPwd;
	}

	public int getAge() {
		return age;
	}

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

	@Override
	public String toString() {
		return "User [userName=" + userName + ", userPwd=" + userPwd + ", age=" + age + "]";
	}

}

 

(二)创建json数据的方法

/**
	 * 根据一个User对象数组创建json数据,每个user对象为一个json数据,user对象中每个字段为json数据的字段内容
	 * 
	 * @param users
	 *            user对象的数组
	 * @return
	 */
	private static String createJSON(User[] users) {
		// 创建一个保存json数据内容的字符串
		String jsonInfo = new String();
		// 创建json格式的数据对象,该对象是一个包含n个json数据对象的集合
		try {
			JSONArray jsonArray = new JSONArray();
			// 循环User对象数组,根据每一个对象生成一个json数据,再将生成好的json数据放到jsonArray中去
			for (int i = 0; i < users.length; i++) {
				// 创建一个json类,对应User对象
				JSONObject jsonUser = new JSONObject();
				// 将user中每个字段的值放入jsonUser中
				jsonUser.put("userName", users[i].getUserName());
				jsonUser.put("userPwd", users[i].getUserPwd());
				jsonUser.put("age", users[i].getAge());
				// 将jsonUser放入jsonArray
				jsonArray.put(jsonUser);
			}
			// 将jsonArray编程json字符串
			jsonInfo = jsonArray.toString();
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return jsonInfo;
	}

 

(三)测试代码

public static void main(String[] args) {
		// 创建几个User对象
		User[] users = new User[] { new User("Bill", "123", 22), new User("Tom", "234", 21),
				new User("John", "345", 23) };
		String data = createJSON(users);
		System.out.println(data);
	}

 

三、利用Java解析json数据

(一)解析方法

/**
	 * 通过传入的json字符串数据解析json数据,并保存到User的列表中
	 * 
	 * @param jsonData
	 *            json数据
	 * @return 解析完json数据后保存的User列表对象
	 */
	private static ArrayList<User> parseJSON(String jsonData) {
		ArrayList<User> usersList = new ArrayList<>();
		try {
			// 将json字符串转成jsonArray对象
			JSONArray jsonArray = new JSONArray(jsonData);

			// 解析jsonArray中的每一个json数据
			for (int i = 0; i < jsonArray.length(); i++) {
				// 获取一个json数据对象
				JSONObject jsonObject = jsonArray.getJSONObject(i);
				// 获取对应的值
				String userName = jsonObject.getString("userName");
				String userPwd = jsonObject.getString("userPwd");
				int age = jsonObject.getInt("age");
				// 根据解析的值创建一个User对象
				User user = new User(userName, userPwd, age);
				// 将解析后的对象添加到User列表中
				usersList.add(user);
			}
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return usersList;
	}

 

(二)测试代码

public static void main(String[] args) {
		// 创建几个User对象
		User[] users = new User[] { new User("Bill", "123", 22), new User("Tom", "234", 21),
				new User("John", "345", 23) };
		String data = createJSON(users);
		System.out.println(data);
		// 解析json数据
		ArrayList<User> list = parseJSON(data);
		System.out.println(list);
	}

 

 

谢谢您的关注和阅读,文章不当之处还请您不吝赐教~~~微笑微笑微笑

分享到:
评论

相关推荐

    java解析JSON数据

    使用该方法可以轻松解析JSON数组,方便取出JSON数据

    Java解析json数据

    总结来说,Java解析JSON数据主要依赖于第三方库,如Jackson和Gson。通过这些库,我们可以方便地将JSON字符串转换为Java对象,反之亦然,从而实现数据的高效传输和处理。在实际项目中,选择适合的库并熟练掌握其用法...

    java解析json数据

    Java中解析JSON数据主要依赖于一些库,如org.json库(包含JSONObject和JSONArray类)。 在Java中,解析JSON数据的步骤通常分为以下几个部分: 1. **导入相关库**:首先,你需要在项目中引入JSON库。如果是使用...

    JAVA解析JSON数据

    本篇文章将深入探讨如何在Java中解析JSON数据。 首先,我们需要一个JSON库来帮助我们进行解析工作。Java标准库并不内置JSON处理功能,但有多个开源库可供选择,如Gson、Jackson、org.json和JSON-P。这里我们以广泛...

    Java解析json数据,方法不需要修改传json参数就行了

    总的来说,Java解析JSON数据是一项常见的任务,Jackson和Gson库提供了强大且灵活的工具,使开发人员能够轻松处理JSON数据,而无需修改原始的JSON参数。只需确保正确配置和使用这些库,你就可以实现从JSON到Java对象...

    Java组装json和java解析json数组

    附件内容为:Java组装map数据,然后转换为json数据格式;Java解析json数据

    JAVA解析JSON数据代码需要的多个jar包

    在Java编程环境中,解析JSON数据是一项常见的任务,特别是在与Web服务交互、API开发或处理来自服务器的数据时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性和易于编写,被广泛用于...

    java解析json的jar包

    此压缩包包含两个jar:json-lib-2.4-jdk15.jar和ezmorph-1.0.6.jar 这两个包都是java解析json数据的依赖包,而且是最新版,开源的东东好多人还要分,俺不要分,只希望对你有用。

    java解析json格式数据 json.jar

    3. **JSONParser**:这是解析JSON数据的主要工具类,它提供了`parse()`方法,可以从JSON格式的字符串或输入流中解析出JSON对象或数组。 4. **JSONStringer** 和 **JSONWriter**:这两个类用于生成JSON格式的字符串...

    json库-java解析json数据类库

    在Java中,有许多库可以用来解析和生成JSON数据,其中最常用的包括Jackson、Gson、org.json和Fastjson等。本篇文章将详细介绍这些JSON库的使用方法以及它们的特点。 1. **Jackson** Jackson是Java开发中最流行的...

    java 解析 json文件 java 解析 json文件

    Java解析JSON文件是Java开发中常见的一项任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写的特点,被广泛应用于网络数据传输...

    JAVA 解析 JSON 数据(包齐全)

    本教程将详细介绍如何在Java中解析JSON数据,包括所需的包和相关知识点。 首先,要解析JSON数据,你需要引入Java的JSON处理库。Java 8及以上版本提供了内置的`java.util.JsonParser`和`java.util.JsonObject`类,但...

    java解析json数据格式的jar包——fastjson!

    阿里巴巴的一款java解析json的jar包,fastjson,方便简单实用!

    Java使用JSONPath解析JSON完整内容详解

    Java使用JSONPath解析JSON完整内容详解 JsonPath是一种用于从JSON文档中提取特定数据片段的查询语言。它的语法类似于CSS选择器,能够精确地定位到JSON结构中的特定位置,从中提取所需的数据。对于开发者来说,...

    java解析json完整案例

    接下来,我们将讨论如何使用`org.json`库获取和解析JSON数据。假设我们有一个JSON字符串,例如: ```json { "name": "John", "age": 30, "city": "New York" } ``` 在Java中,我们可以使用`JSONObject`类来解析...

    JAVA 解析JSON格式数据

    总结,Java解析JSON主要依靠第三方库,如Jackson和Gson,它们提供了解析JSON字符串到Java对象,以及将Java对象序列化为JSON字符串的功能。对于复杂的JSON结构,可以通过创建相应的Java类来映射。在实际操作中,务必...

    java 解析json数据的lib

    commons-beanutils.jar commons-collections-3.2.jar commons-httpclient-3.1.jar commons-lang-2.4.jar commons-logging.jar ...json-lib-2.4-jdk15.jar morph-1.1.1.jar xom1.1.jar 以上所有的jar文件都有

    C#像java一样优雅的解析JSON数据

    C#的一个解析JSON的工具类,像java一样优雅的解析JSON数据,包含有JSONObject和JSONArray对象。 JSONObject json = new JSONObject(); json.Put("sex", "男"); json.Put("age", 123); json.Put("name", "张三"); ...

    JAVA解析JSON相关.docx

    标题与描述均提到了“JAVA解析JSON”,这表明文档主要关注的是如何在Java环境中解析JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java...

Global site tag (gtag.js) - Google Analytics