JSON-JAVA
创建JSON
private static void JSONObjectCreateByJavaBean() {
// 创建javaBean对象
Info info = new Info();
info.setAge(21);
info.setBirthday("1996-10-23");
info.setCar(null);
info.setComment("这是一个注释");
info.setHas_gf(false);
info.setHouse(false);
info.setMajor(new String[] { "我会打酱油", "我会挖掘机" });
info.setName("隆冬强");
info.setSchool("lanxiang");
System.out.println(new JSONObject(info));
System.out.println(info.getBirthday());
}
实体类:
package com.entity;
import java.util.Arrays;
public class Info {
private String name;
private String school;
private boolean has_gf;
private double age;
private Object car;
private Object house;
private String[] major;
private String comment;
private String birthday;
//在json生成过程中忽略掉这个属性
private transient String ignore;
//这里省略getXxx和setXxx方法
@Override
public String toString() {
return "Info [name=" + name + ", school=" + school + ", has_gf=" + has_gf + ", age=" + age + ", car=" + car
+ ", house=" + house + ", major=" + Arrays.toString(major) + ", comment=" + comment + ", birthday="
+ birthday + "]";
}
}
创建json的时候最好最好使用JAVABEAN来创建,可以重复使用当然也可以使用下面两种方式来创建,效果是一样的:
private static void JSONObjectCreate() {
// 1、创建一个JSONObject对象
JSONObject jsonObject = new JSONObject();
Object nullObj = null;
jsonObject.put("name", "哈哈");
jsonObject.put("age", 21);
jsonObject.put("birthday", "1996-10-23");
jsonObject.put("major", new String[] { "挖掘机", "推土机" });
jsonObject.put("has_gf", false);
jsonObject.put("car", nullObj);
jsonObject.put("house", nullObj);
jsonObject.put("comment", "这是一个注释");
// 输出
System.out.println(jsonObject.toString());
}
private static void JSONObjectCreateByMap() {
// TODO Auto-generated method stub
Map<String, Object> map = new HashMap<String, Object>();
Object nullObj = null;
map.put("name", "来来来");
map.put("age", 21);
map.put("birthday", "1996-10-23");
map.put("major", new String[] { "挖掘机", "推土机" });
map.put("has_gf", false);
map.put("car", nullObj);
map.put("house", nullObj);
map.put("comment", "这是一个注释");
// 输出
System.out.println(new JSONObject(map).toString());
}
推荐使用Javabean的方式!
GSON解析JSON
这是解析的json文件
{
"name": "光头强",
"age": "21",
"birthday": "1996-10-23",
"school": "蓝翔",
"has_gf": false,
"major": [
"挖掘机",
"推土机"
],
"car": null,
"house": null,
"comment": "这是一个注释",
"apple": {
"price": "100元",
"weight": "10kg",
"color": "红色"
}
}
private static void parseJson() throws Exception {
// 路径:src/main/resources/jsons/info.json
File fis = new File("src/main/resources/jsons/info.json");
// 得到文件当中的内容
String content = FileUtils.readFileToString(fis, "gbk");
JSONObject jsonObject = new JSONObject(content);
//解析字符串
System.out.println("姓名是------>" + jsonObject.getString("name"));
//解析数组
JSONArray jsonArray = jsonObject.getJSONArray("major");
for (int i = 0; i < jsonArray.length(); i++) {
String string = (String) jsonArray.get(i);
System.out.println("专业:" + (i + 1) + string);
}
//简单对象解析
JSONObject jsonObject2 = jsonObject.getJSONObject("apple");
System.out.println(jsonObject2.get("price"));
}
Gson生成JSON
private static void GsonCreate() {
// 创建javaBean对象
Info info = new Info();
info.setAge(21);
info.setBirthday("1996-10-23");
info.setCar(null);
info.setComment("这是一个注释");
info.setHas_gf(false);
info.setHouse(false);
info.setMajor(new String[] { "我会打酱油u", "我会挖掘机 " });
info.setName("哈哈哈");
info.setSchool("lanxiang");
info.setIgnore("不要看见我");
//创建GsonBuilder对象
GsonBuilder gsonBuilder = new GsonBuilder();
//设置打印是否格式化 便于阅读
gsonBuilder.setPrettyPrinting();
//创建gson对象
//Gson gson = new Gson();也可以这样创建 ,但是无法做一些设置,比如格式化
Gson gson = gsonBuilder.create();
System.out.println(gson.toJson(info));
}
解析JSON
private static void GsonParse() throws Exception {
// 路径:src/main/resources/jsons/info.json
File fis = new File("src/main/resources/jsons/info.json");
// 得到文件当中的内容
String content = FileUtils.readFileToString(fis, "gbk");
Gson gson = new Gson();
//把json对象进行泛解析
Info info = gson.fromJson(content, Info.class);
System.out.println(info);
System.out.println(info.getSchool());
// 格式化时间日期,需要把实体类中的birthday类型换成Data 就可以看出来
// Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
// Info2 info2 = gson.fromJson(content, Info2.class);
// System.out.println(info2.getBirthday().toLocaleString());
// //输出List集合 String数组类型换成List集合就可以看出来
// System.out.println(info2.getMajor());
// System.out.println(info2.getMajor().get(1));
}
FastJSON生成JSON
private static void createFastJson() {
Info info = new Info();
info.setAge(21);
info.setBirthday("1996-10-23");
info.setCar(null);
info.setComment("这是一个注释");
info.setHas_gf(false);
info.setHouse(false);
info.setMajor(new String[] { "我会打酱油", "我会挖掘机 " });
info.setName("提莫");
info.setSchool("lanxiang");
info.setIgnore("不要看见我");
System.out.println(JSON.toJSONString(info));
}
这里还是,使用上面的javabean,使用JSON.toJSONString()方法,和别的json没多大区别
这里提供一个官方的Sample
public static void FastJsonCreate() {
Group group = new Group();
group.setId(0L);
group.setName("admin");
User guestUser = new User();
guestUser.setId(2L);
guestUser.setName("guest");
User rootUser = new User();
rootUser.setId(3L);
rootUser.setName("root");
group.addUser(guestUser);
group.addUser(rootUser);
String jsonString = JSON.toJSONString(group);
//控制台输出json
System.out.println(jsonString);
JSON.writeJSONString(new FileOutputStream("src/main/resources/jsons/role.json"), Charset.forName("gbk"), group,
//格式化json
SerializerFeature.PrettyFormat);
}
Group.java
public class Group {
private Long id;
private String name;
private List<User> users = new ArrayList<User>();
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;
}
public void addUser(User user) {
users.add(user);
}
}
User.java
public class User {
private Long id;
private String name;
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;
}
}
FastJSON解析JSON
private static void parseFastJson() throws IOException {
// 找到json文件
File file = new File("src/main/resources/jsons/role.json");
// 使用io包中的FileUtils方法读取json文件
String content = FileUtils.readFileToString(file, "gbk");
// Info parseObject = JSON.parseObject(content, Info.class);
// System.out.println(parseObject);
// System.out.println(parseObject.getBirthday());
//创建group对象,这点有点类似Gson哈
Group group = JSON.parseObject(content, Group.class);
System.out.println(JSON.toJSONString(group));
System.out.println(JSON.toJSONString(group.getName()));
System.out.println(JSON.toJSONString(group.getName().get(0)));
System.out.println(JSON.toJSONString(group.getName().get(0).getName()));
}
需要注意的是 JSON.writeJSONString 这个方法的最后一个参数 点击 ctrl 打开看,可以是这些值:我使用了一个格式化的参数,我也不知道这么多的参数每个的意思,有兴趣的同学可以都试试。
QuoteFieldNames, UseSingleQuotes, WriteMapNullValue, WriteEnumUsingToString, WriteEnumUsingName, UseISO8601DateFormat, WriteNullListAsEmpty, WriteNullStringAsEmpty, WriteNullNumberAsZero, WriteNullBooleanAsFalse, SkipTransientField, SortField, WriteTabAsSpecial, PrettyFormat(格式化), WriteClassName, DisableCircularReferenceDetect, WriteSlashAsSpecial, BrowserCompatible, WriteDateUseDateFormat, NotWriteRootClassName, DisableCheckSpecialChar, BeanToArray, WriteNonStringKeyAsString, NotWriteDefaultValue, BrowserSecure, IgnoreNonFieldGetter, WriteNonStringValueAsString, IgnoreErrorGetter, WriteBigDecimalAsPlain, MapSortField;
结束语:这三种方式都可以在web ,安卓 当中使用 ,其中JSON-JAVA(org.java) 不需要在安卓中引入依赖直接使用即可,安卓中Gson需要引入依赖,而在web中JSON-JAVA和Gson都需要引入依赖.