文章目录
  1. 1. 说明
  2. 2. JSON的定义
  3. 3. JSON和XML的对比
  4. 4. Java中的实例

说明

本篇先介绍在java中生成与解析JSON数据,下篇继续介绍在Android中生成和解析JSON格式数据。解析方法有好几种,个人觉得如果在Android中就用Android提供的jar包org.json中的方法很方便。如果在java中要加入好几个jar包。根据个人习惯可以选择自己觉得合适的方法。

JSON的定义

一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。

JSON和XML的对比

  • JSON和XML的数据可读性基本相同
  • JSON和XML同样拥有丰富的解析手段
  • JSON相对于XML来讲,数据的体积小
  • JSON与JavaScript的交互更加方便
  • JSON对数据的描述性比XML较差
  • JSON的速度要远远快于XML

Java中的实例

在java中需要导入必须的几个jar包,缺一个都会报错,刚开始我用java学json数据时就是由于网上下载的一些jar包经常有缺失导致总会有一些错误导致不能运行。我的实例里面的jar包如下,网上也可以下载jar包加在自己项目里。

以下是我写的生成和解析JSON两种简便方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package com.carlos.json;

import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.util.JSONStringer;
import net.sf.json.util.JSONTokener;

public class Json1 {

static List<UserInfo> infos;
static UserInfo info;
static JSONObject object;
static JSONArray array;
static JSONStringer stringer;
static String json;
static String username;
static String password;

public static void main(String[] args) {

infos = addList();// 添加字段给下面生成JSON数据使用

json = addJsonObject(infos);// 通过JSONObject方法生成Json数据

parseJsonObject(json);// 通过JSONObject方法解析Json数据

json = addJsonStringer(infos);// 通过JSONStringer方法生成Json数据

parseJsonTokener(json);// 通过JSONStringer方法解析Json数据

}

static List<UserInfo> addList() {
infos = new ArrayList<UserInfo>();
info = new UserInfo();
info.setUsername("Carlos");
info.setPassword("123456");
infos.add(info);
info = new UserInfo();
info.setUsername("Jack");
info.setPassword("654321");
infos.add(info);
return infos;
}

static String addJsonObject(List<UserInfo> infos) {

object = new JSONObject();
array = new JSONArray();
for (int i = 0; i < infos.size(); i++) {
JSONObject object2 = new JSONObject();
info = infos.get(i);
object2.put("username", info.getUsername());
object2.put("password", info.getPassword());
array.add(object2);
}
object.put("users", array);
System.out.println("JSONObject方法生成的json数据:\n" + object);
return object.toString();
}

static String addJsonStringer(List<UserInfo> infos) {
stringer = new JSONStringer();
stringer.object();
stringer.key("users");
stringer.array();
for (int i = 0; i < infos.size(); i++) {
info = infos.get(i);
stringer.object();
stringer.key("username").value(info.getUsername());
stringer.key("password").value(info.getPassword());
stringer.endObject();
}
stringer.endArray();
stringer.endObject();
System.out.println("JSONStringer方法生成的json数据:\n" + stringer);
return stringer.toString();
}

static void parseJsonObject(String json) {
object = JSONObject.fromObject(json);
array = object.getJSONArray("users");
System.out.println("JSONObject方法解析的结果:");
for (int i = 0; i < array.size(); i++) {
object = array.getJSONObject(i);
username = object.getString("username");
password = object.getString("password");
System.out.println("用户名:" + username + " 的密码是:" + password);
}
}

static void parseJsonTokener(String json) {
JSONTokener tokener = new JSONTokener(json);
object = (JSONObject) tokener.nextValue();
array = object.getJSONArray("users");
System.out.println("JSONTokener方法解析的结果:");
for (int i = 0; i < array.size(); i++) {
object = array.getJSONObject(i);
username = object.getString("username");
password = object.getString("password");
System.out.println("用户名:" + username + " 的密码是:" + password);
}

}
}

UserInfo工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.carlos.json;

public class UserInfo {

private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

}

控制台输出的结果:

1
JSONObject方法生成的json数据:
{"users":[{"username":"Carlos","password":"123456"},{"username":"Jack","password":"654321"}]}
JSONObject方法解析的结果:
用户名:Carlos 的密码是:123456
用户名:Jack 的密码是:654321
JSONStringer方法生成的json数据:
{"users":[{"username":"Carlos","password":"123456"},{"username":"Jack","password":"654321"}]}
JSONTokener方法解析的结果:
用户名:Carlos 的密码是:123456
用户名:Jack 的密码是:654321

文章目录
  1. 1. 说明
  2. 2. JSON的定义
  3. 3. JSON和XML的对比
  4. 4. Java中的实例