java中的json使用
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<String, Object> hashMap = new HashMap<String, Object>();
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<User> 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<String> books = new ArrayList<String>();
private HashMap<String, String> booksMap = new HashMap<String, String>();
//获取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<String> getBooks() {
return books;
}
public void setBooks(List<String> books) {
this.books = books;
}
public HashMap<String, String> getBooksMap() {
return booksMap;
}
public void setBooksMap(HashMap<String, String> 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> T GsonToBean(String gsonString, Class<T> cls) {
T t = null;
if (gson != null) {
t = gson.fromJson(gsonString, cls);
}
return t;
}
/**
* 这里的入参是json数组类型的字符串
* jsonArrayString转成list
*/
public static <T> List<T> jsonArrayToList(String json, Class<T> cls) {
Gson gson = new Gson();
List<T> list = new ArrayList<T>();
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 <T> List<Map<String, T>> GsonToListMap(String gsonString) {
List list = null;
if (gson != null) {
list = gson.fromJson(gsonString,
new TypeToken<List>() {
}.getType());
}
return list;
}
/**
* 要求List中全部是Map
* jsonString转成list中有map的
*/
public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) {
List<Map<String, T>> list = null;
if (gson != null) {
list = gson.fromJson(gsonString,
new TypeToken<List<Map<String, T>>>() {
}.getType());
}
return list;
}
/**
* jsonString转成map的
*/
public static <T> Map<String, T> GsonToMaps(String gsonString) {
Map<String, T> map = null;
if (gson != null) {
map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
}.getType());
}
return map;
}
/**
* map转jsonString,指定了Map类型
*/
public static String MapToJson(Map<String,Object> map){
String str = null;
if(gson != null){
str = gson.toJson(map);
}
return str;
}
}
java中的json使用的更多相关文章
- JAVA中使用JSON进行数据传递
最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作. 其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JS ...
- 转载:JAVA中使用JSON进行数据传递
转载网址:http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html 最近在做一个基于JAVA Servlet的WEB应用以及对应的An ...
- JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...
- Java中哪个JSON库的解析速度是最快的?
JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考 了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上 ...
- 3、示例(在java中使用JSON)
教程链接(json-smple1.1.1.jar文件) 链接:http://pan.baidu.com/s/1qXPbYHm 密码:v0f0 如何使用java编程语言编码和解码JSON 首先准备环境以 ...
- JAVA中,JSON MAP LIST的相互转换
1 JSON包含对象和数组,对应于JAVA中的JSONObject,JSONArray 2 String 转JSON对象 JSONObject.fromObject("String" ...
- java中对于JSON 的处理 fastjson gson 系统自带的JSON 的选择
从2月初到8月末,经历了一段痛苦的经历,现在总算感觉已经走出来了,经历那事之后 感觉对人与人之间的感情看的更透了,人也没那么浮躁了: 说实话 以前从来不知道鸟叫有多好听,现在突然觉的大自然真的很美,放 ...
- java 中关于json的使用方法
json在数据传输起了很大的作用,下面说说java中json的使用方法. 文章参考:http://www.codes51.com/article/detail_99574.html json串示例 [ ...
- Java中的Json序列化,不容忽视的getter
在开发的过程中,经常会碰到和自己预期不一样的情况.有的时候自己去研究一下还是很有趣的.这两天在写java web的时候,碰到了一个对象序列化的问题. 问题重现 public class AjaxJso ...
- 使用Jackson在Java中处理JSON
在工作中实际使用到Java处理JSON的情况,且有很大部分都使用的是开源工具Jackson实现的. 一.入门 Jackson中有个ObjectMapper类很是实用,用于Java对象与JSON的互换. ...
随机推荐
- 关于CR0寄存器
开始的时候,我认为CR0.WP如果被置位,那么内存的页面只读属性将会失效,导致可以被写入数据. 这几天正好碰到一个问题,查看了资料才发现,之前的理解不完整. 引用Intel手册中的一句话: CR0.W ...
- Unity 设置2台摄像机的叠加
如果Camera1和Camera2拍摄的物体各自在摄像机视野内,如果在同一个屏幕上把2件物体都显示出来? 1,Camera1的Depth设置为-1 2,Camera2的Depth设置为0,同时Clea ...
- Codeforces div2 #499 B. Planning The Expedition 大水题
已经是水到一定程度了QAQ- Code: #include<cstdio> #include<algorithm> #include<cstring> using ...
- 分清encodeURIComponent encodeURI 和 escape
encodeURIComponent encodeURI escape 目的:这三个函数的作用都是让一段字符串在所有电脑(所有国家区域语言)上可读. escape对字符串进行处理: encodeURI ...
- Is jQuery Still Relevant in 2018?
DOM Selection $('.someclass') document.querySelector('.someclass') document.querySlectorAll('.somecl ...
- 树莓派搭建 Google TV
出处:http://my.oschina.net/funnky/blog/142067 树莓派搭建 Google TV 目录:[ - ] Google TV是啥玩意 ? 搭建我们自己的Google T ...
- POJ3684 Physics Experiment 【物理】
Physics Experiment Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1031 Accepted: 365 ...
- HDU 4313 Contest 2
很明显的树形DP了.但网上有的说可以用并查集.... 考虑一棵子树,当根结点有机器人时,则必定所有子树都要和根结点断开,而根结点向上返回的路径值则为其父结点与根结点连边的权值. 当根结点安全时,假设其 ...
- [Puppeteer] Get a Page's Load Time with Puppeteer (window.profermence.timing)
In this lesson we are going to use Google's Puppeteer to gather metrics about a page's load time. We ...
- 从头认识Spring-3.4 简单的AOP日志实现-扩展添加检查订单功能,以便记录并检測输入的參数
这一章节我们再上一个章节的基础上加上一个检查订单功能 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_spring.ch03.topic_1 ...