import json java_java中的json使用

本文展示了如何使用Java和Gson库进行JSON对象和数组的创建、转换及解析。通过示例代码详细解释了如何将Bean、List、Map等数据结构转化为JSON字符串,以及如何从JSON字符串中还原这些数据结构。此外,还提供了一个GsonUtil工具类,方便进行JSON操作。
摘要由CSDN通过智能技术生成

import org.json.simple.JSONArray;

import org.json.simple.JSONObject;

/**

* 使用的是json-lib-2.4.jar

* @author yes

*

*/

public class TestJson {

public static void main(String[] args) throws Exception {

//定义一个json对象

JSONObject jo = new JSONObject();

jo.put("id", "1");

jo.put("name", "yang");

jo.put("age", "13");

//定义一个Json数组

JSONArray ja = new JSONArray();

ja.add(0, "yang");

ja.add(1,"li");

ja.add(2, "zhang");

System.out.println("json对象的格式:"+jo);

System.out.println("json数组的格式:"+ja);

//使用类自带的方法来转换成String类型

String str_ = jo.toJSONString();

String strs_ = ja.toJSONString();

System.out.println("json对象-->String"+str_);

System.out.println("json数组-->String"+strs_);

}

}

执行结果:

json对象的格式:{"id":"1","age":"13","name":"yang"}

json数组的格式:["yang","li","zhang"]

json对象-->String{"id":"1","age":"13","name":"yang"}

json数组-->String["yang","li","zhang"]

3.Json在数据传输中的使用

a.将各种类型装换成Json类型字符串

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class Test03 {

public static void main(String[] args) {

//创建一个User对象(name,age,id)

User user = new User();

user.setAge(22);

user.setName("张三");

user.setId(33);

List li = new ArrayList();

//创建一个Map,放入三组值

Map hashMap = new HashMap();

hashMap.put("name", "ZHULI");

hashMap.put("age", "30");

hashMap.put("id", "4");

//向List中放入数据

li.add(0, "123");

li.add(1,"444");

li.add(hashMap);

//将List,Map,Bean---->json类型字符串

String stra = GsonUtil.GsonString(user);

String strb = GsonUtil.GsonString(hashMap);

String strc = GsonUtil.GsonString(li);

System.out.println("Bean-->String结果:"+stra);

System.out.println("Map-->String结果:"+strb);

System.out.println("List-->String结果"+strc);

}

}

执行结果:

Bean-->String结果:{"name":"张三","age":22,"id":33}

Map-->String结果:{"id":"4","age":"30","name":"ZHULI"}

List-->String结果["123","444,{"id":"4","age":"30","name":"ZHULI"}]

b.将各种类型的json类型字符串解析出来

//1.将JsonArray类型字符串转换成Bean或list

import java.util.List;

import Socket.User;

public class Test02 {

public static void main(String[] args) {

//定义一个jsonArrayString

String json = "[{'name':'yang','id':'1','age':'18'},"

+ "{'name':'zhang','id':'2','age':'13'}]";

//jsonString转list,User类自己创建,三个属性

List li = GsonUtil.jsonArrayToList(json,User.class);

for(User user : li){

String name = user.getName();

Integer id = user.getId();

Integer age = user.getAge();

System.out.println("学生的姓名是:"+name+"  "+"ID是:"+id+"  "+"年龄是:"+age);

}

}

}

执行结果:

学生的姓名是:yang  ID是:1  年龄是:18

学生的姓名是:zhang  ID是:2  年龄是:13

将JsonArray类型字符串转换成List中包含map的

import java.util.List;

import java.util.Map;

public class Test05 {

public static void main(String[] args) {

String json = "['123','444',{'id':'4','age':'30','name':'ZHULI'}]";

//list中含有Map但不全是Map

List li = GsonUtil.GsonToListMap(json);

Map m  =(Map) li.get(2);

System.out.println(m.get("age"));

}

}

//如果list中全部是Map类型的数据,使用GsonToListMap();方法

执行结果:

30

123

c.实用性比较高的,复杂的数据转化成Bean进行操作

//先贴出学生类

package TestJson;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

public class Student {

private String id;

private String nickName;

private String email;

private String age;

private List books = new ArrayList();

private  HashMap booksMap = new HashMap();

//获取set,get方法

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getNickName() {

return nickName;

}

public void setNickName(String nickName) {

this.nickName = nickName;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getAge() {

return age;

}

public void setAge(String age) {

this.age = age;

}

public List getBooks() {

return books;

}

public void setBooks(List books) {

this.books = books;

}

public HashMap getBooksMap() {

return booksMap;

}

public void setBooksMap(HashMap booksMap) {

this.booksMap = booksMap;

}

}

//测试代码

package TestJson;

public class Test05 {

public static void main(String[] args) {

//定义一个包含list,map类型的字符串

String json = "{'books':['数学','语文','英语','物理','化学','生物'],'booksMap':{'3':'英语','2':'语文','1':'数学','6':'生物','5':'化学','4':'物理'},'email':'965266509@qq.com','nickName':'小明','id':'1','age':'22'}";

//转化成Bean

Student su = GsonUtil.GsonToBean(json, Student.class);

System.out.println("学生的姓名是:"+su.getNickName());

System.out.println("学生学习的第一门课:"+su.getBooks().get(0));

System.out.println("序号3课程是:"+su.getBooksMap().get("3"));

}

}

执行结果:

学生的姓名是:小明

学生学习的第一门课:数学

序号3对应的课程是:英语

5.将基本的转化实现放到了一个工具类中。GsonUtil.java

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import com.google.gson.Gson;

import com.google.gson.JsonArray;

import com.google.gson.JsonElement;

import com.google.gson.JsonParser;

import com.google.gson.reflect.TypeToken;

/**

* 使用gson来操作Json

* 1.对象实体类,list,map,等转化成----->jsonString(进行数据传递)

* 2.jsonString转化成----->对象实体类,list,map(解析返回的数据)

* 3.我使用的是gson-2.2.2.jar

* @author yes

*

*/

public class GsonUtil {

private static Gson gson = null;

static {

if (gson == null) {

gson = new Gson();

}

}

/**

* 将object对象转成json字符串(jsonString)

* boject 可以是List,也可以是Bean(对象类型)

* @param object

*/

public static String GsonString(Object object) {

String gsonString = null;

if (gson != null) {

gsonString = gson.toJson(object);

}

return gsonString;

}

/**入参是json对象

* 将gsonObjectString转成泛型bean(实体类)

* @param gsonString

*/

public static T GsonToBean(String gsonString, Class cls) {

T t = null;

if (gson != null) {

t = gson.fromJson(gsonString, cls);

}

return t;

}

/**

* 这里的入参是json数组类型的字符串

* jsonArrayString转成list

*/

public static List jsonArrayToList(String json, Class cls) {

Gson gson = new Gson();

List list = new ArrayList();

JsonArray array = new JsonParser().parse(json).getAsJsonArray();

for(final JsonElement elem : array){

list.add(gson.fromJson(elem, cls));

}

return list;

}

/**

* List对泛型没有要求

* jsonString转成list中有map的

*/

public static List> GsonToListMap(String gsonString) {

List list = null;

if (gson != null) {

list = gson.fromJson(gsonString,

new TypeToken() {

}.getType());

}

return list;

}

/**

* 要求List中全部是Map

* jsonString转成list中有map的

*/

public static List> GsonToListMaps(String gsonString) {

List> list = null;

if (gson != null) {

list = gson.fromJson(gsonString,

new TypeToken>>() {

}.getType());

}

return list;

}

/**

* jsonString转成map的

*/

public static Map GsonToMaps(String gsonString) {

Map map = null;

if (gson != null) {

map = gson.fromJson(gsonString, new TypeToken>() {

}.getType());

}

return map;

}

/**

* map转jsonString,指定了Map类型

*/

public static String MapToJson(Map map){

String str = null;

if(gson != null){

str = gson.toJson(map);

}

return str;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值