JSONObject与GSON的一些常用的方法的使用

通过学习ajax然后接触了Json最后通过json接触到了JSONObject和Google的GSON,下面来一起看看JSONObject和GSON吧。

先附上依赖

//JSONObject依赖<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency>

顺便附上junit的依赖 毕竟用junit测试的

 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency>

差点忘记了这是FileUtils文件操作工具类的依赖

<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.0.1</version></dependency>

emmm直接上案例吧

package test;import com.JSON.domain.User;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;import java.util.Date;
import java.util.HashMap;public class JSONTEST {@Testpublic void TestJSON(){/*** 通过原生生成json数据格式*/JSONObject jsonObject=new JSONObject();jsonObject.put("name","李四");jsonObject.put("home",true);jsonObject.put("number",134.11);jsonObject.put("sex","男");System.out.println(jsonObject.toString());/***通过map来生成json数据格式*/HashMap<String,Object> map=new HashMap<String, Object>();map.put("name","张三");map.put("home",true);map.put("技能",new String[]{"json","java","python"});System.out.println(JSONObject.fromObject(map).toString());JSONArray mapJson=JSONArray.fromObject(map);  //数组格式mapJson.add(1, new String[]{"dajhdka","dagdhag"});
//        mapJson.add(2,"是否有女朋友","");System.out.println(mapJson.toString());/*** 通过实体类生成json数据格式*/User user=new User("小红","女",1550.2,false);JSONObject jsonObject1=JSONObject.fromObject(user);System.out.println(jsonObject1);}@Testpublic void TestGSON(){GsonBuilder gsonBuilder=new  GsonBuilder(); //设定格式的User user=new User("小红","女",1550.2,false,new Date());/*** String  toJson(object)  返回值是String 将对象转换成json格式*/gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss"); //设定date属性 有误json本身没有date类型Gson gson=gsonBuilder.create();String Gjson=gson.toJson(user);System.out.println(Gjson);/*** 将JSON格式转换成实体类* 不清楚为什么我用了 复用功能的话 json格式转换成的实体类就没有值了 就是无法定位到*/String content="{\"name\":\"小红\",\"sex\":\"女\",\"number\":1550.2,\"home\":false,\"birthday\":\"2020-02-17\"}";User user1=gson.fromJson(content,User.class);System.out.println(user1);}
}

JSONobject的案例
在这里插入图片描述

GSON的案例
在这里插入图片描述
实体类

package com.JSON.domain;import com.google.gson.annotations.SerializedName;import java.util.Date;public class User {private String name;
//    @SerializedName("") //SEXGson提供了字段复用功能 :@SerializedName 大概就是别名的意思吧应该(不确定private String sex;private double number;private boolean home;private Date birthday;public Date getBirthday() {return birthday;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", sex='" + sex + '\'' +", number=" + number +", home=" + home +", birthday=" + birthday +'}';}public void setBirthday(Date birthday) {this.birthday = birthday;}public  User(String name, String sex, double number, boolean home,Date birthday){this.name=name;this.sex=sex;this.number=number;this.home=home;this.birthday=birthday;}public  User(String name, String sex, double number, boolean home){this.name=name;this.sex=sex;this.number=number;this.home=home;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public double getNumber() {return number;}public void setNumber(double number) {this.number = number;}public boolean isHome() {return home;}public void setHome(boolean home) {this.home = home;}
}

上面都是一些基础的语法,下面这个案例是JSONObject读取外部json文件

首先是外部文件的位置 为什么放这里呢 因为.class的获取的路径就是这边的 所以我把JSON.json放这
在这里插入图片描述
JSON.json

{"name": "小红","sex": "女","number": 1667.2,"home": false}
package test;import net.sf.json.JSONObject;
import org.apache.commons.io.FileUtils;
import org.junit.Test;import java.io.File;
import java.io.IOException;public class JSONTextParsing {@Testpublic void JSONTest() throws IOException {//获取json文档/*** class.getResource("") 会获取target底下的class的 上一级的包*   这里是 file:/D:/IdeaProjects/Web/JSON_GSON__TEST/target/test-classes/test/*///        System.out.println(JSONTextParsing.class.getResource(""));File file=new File(JSONTextParsing.class.getResource("JSON.json").getFile());//找到该文件/***  使用阿帕奇的jar包  commons-io*  获取文本信息 String类型 readFileToString 并保留格式*/String content=FileUtils.readFileToString(file);JSONObject jsonObject=JSONObject.fromObject(content);System.out.println(jsonObject);}}

在这里插入图片描述

其实还有很多方法没用到,emmm 反正到时候用到了再说吧… …

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tomcat 启用NIO

从Tomcat6.0以后, Java开发者很容易就可以是用NIO的技术来提升tomcat的并发处理能力。 <Connector port"8080" protocol"HTTP/1.1"connectionTimeout"20000"redirectPort"8443" /> 修改成&#xff1a; <Connector port"…

Mybatis(2)---多表查询

首先数据库表展示 User表 Role角色表 关联User表与Role表关系的user_role表 因为是要串联关系所以需要设置外键&#xff0c;以下是外键展示 工程目录展示 pom.xml依赖配置 <dependencies><dependency><groupId>junit</groupId><artifactId>…

ORA-29702:error occurred in Cluster Group Service operation错误解决

ORA-29702:error occurred in Cluster Group Service operation错误解决作者: djb1008(http://djb1008.itpub.net)发表于: 2011.05.10 15:43分类: Oracle 出处: http://djb1008.itpub.net/post/42280/517654--------------------------------------------------------------- 一…

JavaScript复习使用定时器的简易式诸葛大力轮播图

先上效果图 很简单的代码 先创建个文件夹保存成果的照片&#xff0c;然后通过更改src来用定时器循环这些照片 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"…

搜索分布式

http://blog.sina.com.cn/s/blog_539d361e0100xcy9.html http://stackoverflow.com/questions/6923071/lucene-is-it-the-right-answer-for-huge-index http://www.hpl.hp.com/techreports/2008/HPL-2008-64.html http://www.gossamer-threads.com/lists/lucene/general/58087

复习---使用基础语法实现栈及迭代

上图是最最基本的结构&#xff0c;这次我采用数组实现栈。使用数组实现栈&#xff0c;由于java的数组是固定长度的。所以我需要写一个增加长度的方法。然后就是迭代的问题了。使用数组实现栈的话&#xff0c;我们需要写一个迭代器。不过这个迭代器非常容易实现&#xff0c;只需…

同一个闭区间上有界变差函数的和与积都是有界变差函数

设$f,g$是$[a,b]$上的[有界变差函数],则$fg$也是$[a,b]$上的有界变差函数. 证明&#xff1a;设$P\{x_0,\cdots,x_n\}$是对$[a,b]$的任意分割.由于$f$是$[a,b]$上的有界变差函数&#xff0c;因此$$\sum_{i0}^{n-1}|f(x_{i1})-f(x_i)|<M_1$$且$$\sum_{i0}^{n-1}|g(x_{i1})-g(x…

复习----使用链表实现栈(后进先出)及迭代

使用链表进行模拟栈比用数组好用&#xff0c;考虑的要素也少还方便。 链表结构 private class Node{//链表结构Item item;Node next;}迭代器 private class Iterator implements java.util.Iterator<Item>{//迭代器private Node pfirst;Overridepublic boolean hasNex…

复习----使用链表实现队列(先进先出)及迭代

实现队列比实现栈的会多一点复杂&#xff0c;需要两个标记&#xff0c;first表示队头&#xff0c;last表示队尾。 链表结构 private class Node{Item item;Node next;}迭代器 与实现栈的迭代器一模一样 private class Iterator implements java.util.Iterator<Item>{p…

感冒不吃药

感冒药既治不好感冒也不能加速痊愈&#xff0c;只是缓解症状而已 有两百多种不同的病毒都可以引起普通感冒。还有一种感冒叫流感&#xff0c;比起普通感冒来更严重&#xff0c;可能会多高热、恶心等症状。不过流感是由特定的流感病毒引发&#xff0c;可以通过打疫苗来预防。不管…

复习--linux目录及文件操作

文件及目录的一些操作 你可以使用 man [命令]来查看各个命令的使用文档&#xff0c;如 &#xff1a;man mv 目录查看 目录查看 ls -[alh] [文件或目录名称] 不加 [文件或目录名称]的话默认是当前目录路径 绝对路径 从根目录开始写起&#xff0c;用 /表示根目录 相对路径 ./表示…

RedHat Enterprise AS4安装步骤

//因RDMS使用新版本CentOS6.2 有问题 &#xff0c; 没办法只有装低版本操作系统 &#xff01; 概述 Redhat公司的Enterprise Linux AS系列 &#xff08;以下简称AS系列&#xff09;&#xff0c;其中Fedora Core 是符合GPL协议的免费版本&#xff0c;使用范围广泛。AS是高性能的…

贪心---leetcode-376摆动序列

题目 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为摆动序列。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。少于两个元素的序列也是摆动序列。 例如&#xff0c; [1,7,4,9,2,5] 是一个摆动序列&#xff0c;因为差值 (6,-3,…

[转]我们为什么需要工作流

本文转自&#xff1a;http://www.cnblogs.com/foundation/archive/2009/01/12/1374163.html 这是我的"基于WF设计业务流程平台"的题外篇 以下是这系列的文章列表,写的很痛苦,但我会继续写下去 基于WF设计业务流程平台-架构 基于WF设计业务流程平台-权限体系 基于WF设…

贪心---移掉K位数字

题目 给定一个以字符串表示的非负整数 num&#xff0c;移除这个数中的 k 位数字&#xff0c;使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。num 不会包含任何前导零。 示例 1 : 输入: num “1432219”, k 3 输出: “1219” 解释: 移除掉三个数字 4, 3, 和 2 形…

应用层——使用 Socket 通信实现 FTP 客户端程序

转自&#xff1a;http://blog.csdn.net/yixijide/article/details/8280263 简介&#xff1a; FTP 客户端如 FlashFXP&#xff0c;File Zilla 被广泛应用&#xff0c;原理上都是用底层的 Socket 来实现。FTP 客户端与服务器端进行数据交换必须建立两个套接字&#xff0c;一个作为…

Java-IO-对接流

不管是什么文件都可以用字节来表示&#xff0c;下面的例子是将图片解码成字节&#xff0c;然后再编码成图片。 过程 首先将图片解码&#xff0c;我们需要用文件字节输入流&#xff1a;FIleInputStream 用FIleInputStream可以将图片储存到字节数组中&#xff0c;我们通过read(…

蓝桥杯试题 算法提高 数组求和

题干 我人比较蠢想不出好的解决方案&#xff0c;只能采用暴力破解才能维持的了生活这样。。资源限制 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB 问题描述 输入n个数&#xff0c;围成一圈&#xff0c;求连续m&#xff08;m<n&#xff09;个数的和最大为多少&a…

一次较为完整的原生JavaScript AJAX与Java的前后端数据交互

效果 Maven 依赖 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>mysql</groupId><artifactId…

自己的利益,还是用户的名义?

近几个月很低调的京东商城&#xff0c;春节刚过就爆出成功融资7亿美元的高调新闻。前段时间有媒体唱衰京东模式和前景&#xff0c;有名人质疑刘强东能力和人品&#xff0c;看在7亿美金的份上&#xff0c;大家不得不三缄其口了。不过这次融资也有对京东不利的消息&#xff0c;20…