JSON——Java中的使用
1. 构建JSON方法(数据——>JSON)
这里使用Maven构建项目
在pom.xml中添加如下依赖
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
1.1 创建JSONObject对象,利用put(key,value)赋值,toString() 打印出JSON格式
关键词:JSONObject对象,put(), toString()
public class JsonObjectSimple { public static void main(String[] args) {
jSONObjectSimple();
} private static void jSONObjectSimple() { JSONObject xiaofeng=new JSONObject();
Object nullObj=null;//因为put()方法的原因,这里不能直接使用null,所以创建null的对象来跳过编译器的检查
try {
xiaofeng.put("name", "小峰");
xiaofeng.put("age", 22);
xiaofeng.put("birthday", "1999-11-22");
xiaofeng.put("school", "Qinghua University");
xiaofeng.put("major", new String[] {"sing","coding"});
xiaofeng.put("girlfriend", "true");
xiaofeng.put("car",nullObj); //不能直接使用null,需要创建null的对象来跳过编译器的检查
xiaofeng.put("comment","JSON里不能直接使用注释,需要添加时可通过此方式。。"); } catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(xiaofeng.toString());
}
}
控制台输出后复制其到 http://www.jsoneditoronline.org/ 可查看 JSON 数据结构
1.2 通过 HashMap 构建
关键词:HashMap() , put() , toString() , JSONObject(xiaofeng)
private static void createJSONByMap() { Map<String,Object> xiaofeng=new HashMap<String,Object>();
Object nullObj=null;
xiaofeng.put("name", "小峰");
xiaofeng.put("age", 22);
xiaofeng.put("birthday", "1999-11-22");
xiaofeng.put("school", "Qinghua University");
xiaofeng.put("major", new String[] {"sing","coding"});
xiaofeng.put("girlfriend", "true");
xiaofeng.put("car",nullObj); //不能直接使用null,需要创建null的对象来跳过编译器的检查
xiaofeng.put("comment","JSON里不能直接使用注释,需要添加时可通过此方式。。"); System.out.println(new JSONObject(xiaofeng).toString());
}
3. 使用 JavaBean 创建 JSON
关键词:JavaBean, setXxx(), JSONObject(xiaofeng)
首先创建 JavaBean 类Person(略), 之后创建。。。
private static void createJSONByBean() {
//创建Person对象,利用set()方法赋值,最后转为JSONObject对象输出
Person xiaofeng=new Person();
xiaofeng.setName("小峰");
xiaofeng.setAge(22.5);
xiaofeng.setGirlfriend(true);
xiaofeng.setMajor(new String[]{"唱歌","coding"}); System.out.println(new JSONObject(xiaofeng));
}
注意,在创建JavaBean时,由于JSON不支持date格式,所以日期格式需要设置为String类型,这也是JSON的缺陷。
2. 解析读取JSON数据(JSON——>数据)
xiaofeng.json
{
"birthday": "1999-11-22",
"girlfriend": "true",
"major": [
"sing",
"coding"
],
"school": "Qinghua University",
"car": null,
"name": "小峰",
"comment": "JSON里不能直接使用注释,需要添加时可通过此方式。。",
"age": 22
}
从文件中读取JSON
关键词:
ReadJSON.class.getResource("/xiaofeng.json").getFile() ,JSONArray,readFileToString(file)
public class ReadJSON { public static void main(String[] args) throws IOException, JSONException {
//获取本文件路径下的json文件
File file=new File(ReadJSON.class.getResource("/xiaofeng.json").getFile());
//读取json文件内容
String content=FileUtils.readFileToString(file);
JSONObject jsonObject =new JSONObject(content);
System.out.println("姓名是 :"+jsonObject.getString("name"));
System.out.println("年龄是 :"+jsonObject.getDouble("age"));
System.out.println("有女朋友吗 ?"+jsonObject.getBoolean("girlfriend"));
//数组类型转换成JSONArray类型来解析,不能直接读取
JSONArray majorArray=jsonObject.getJSONArray("major");
for(int i=0;i<majorArray.length();i++){
String m=(String) majorArray.get(i);
System.out.println("专业——"+(i+1)+m);
}
} }
控制台输出
为增加程序健壮性,可在JSON数据解析时加入 非空【isNull()】 判断
//判断 name 是否为空
if (!jsonObject.isNull("name")) {
System.out.println("姓名是 :" + jsonObject.getString("name"));
}
//反例,无输出
if (!jsonObject.isNull("nme")) {
System.out.println("姓名是 :" + jsonObject.getString("name"));
} System.out.println("年龄是 :" + jsonObject.getDouble("age"));
JSON——Java中的使用的更多相关文章
- json:java中前台向后台传对象数据
前台传入的是一个json类型的数据,如何在后台解析成想要的数据类型? 例如: 后台获取了前台一个string类型的数据@RequestParam(value = "forceUpgradeT ...
- Java中json的构造和解析
什么是 Json? JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机 ...
- JAVA中使用JSON进行数据传递
最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作. 其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JS ...
- Java中JSON的简单使用与前端解析
http://www.blogjava.net/qileilove/archive/2014/06/13/414694.html 一.JSON JSON(JavaScript Object Notat ...
- Java中json工具对比分析
Java中几个json工具分析 1, 环境 JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码 2,分析对象 jackson1.8.2 http://jackson.c ...
- 在java代码中显示json字符串(怎么避免json字符串中双引号在java代码中显示)
String log = "eyJvcmRlckluZm8iOnsiaWQiOjEwNzQwNCwib3JkZXJJZCI6MjczNjQyMSwicHJvZHVjdENvZGUiOjQ1N ...
- JAVA中,JSON MAP LIST的相互转换
1 JSON包含对象和数组,对应于JAVA中的JSONObject,JSONArray 2 String 转JSON对象 JSONObject.fromObject("String" ...
- 转载:JAVA中使用JSON进行数据传递
转载网址:http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html 最近在做一个基于JAVA Servlet的WEB应用以及对应的An ...
- java 中关于json的使用方法
json在数据传输起了很大的作用,下面说说java中json的使用方法. 文章参考:http://www.codes51.com/article/detail_99574.html json串示例 [ ...
随机推荐
- hdu5829
多校训练8,有官方题解 主要之前没写过ntt,感觉不是很懂原根 先贴一份当模板吧 #include<iostream> #include<cstdio> #include< ...
- (九)expect批量公钥推送
(1)expect实现ssh非交互登录 注意:注释不能出现这脚本里面 spawn表示开启一个会话 \r:表示回车,exp_continue :表示没有出现这样,继续往下执行 interact :停留在 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统
http://www.tuicool.com/articles/NfyqQr 本节主要知识点是easyui 的手风琴加树结构做菜单导航 有园友抱怨原来菜单非常难看,但是基于原有树形无限级别的设计,没有 ...
- 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树)
layout: post title: 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树) author: "luowentaoaa" ca ...
- Codeforces Round #394 (Div. 2) C. Dasha and Password(简单DP)
C. Dasha and Password time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- Jenkins使用SSH远程发布
远程发布需要安装Publish Over SSH插件 比如我们的应用服务器都是通过tomcat用户启动程序,因此,在jenkin服务器上配置免密登录远程服务器tomcat用户 //生成密钥对 ssh- ...
- 【莫队算法】【权值分块】bzoj3809 Gty的二逼妹子序列
如题. #include<cstdio> #include<algorithm> #include<cmath> using namespace std; int ...
- 【斜率优化】BZOJ1096-[ZJOI2007]仓库建设
[题目大意] 有n个工厂编号分别为1-n,第i个仓库库存量为p[i],距离第1个仓库的距离为x[i](x[1]=0).在每一个工厂建立一个仓库费用为c[i],没有建立仓库的工厂只能往编号大于它的仓库运 ...
- 【R笔记】给R加个编译器——notepad++
R的日记-给R加个编译器 转载▼ R是一款强大免费且开源的统计分析软件,这是R的长处,可也是其“缺陷”的根源:不似商业软件那样user-friendly.记得初学R时,给我留下最深印象的不是其功能的强 ...
- Bug Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
yum -y install gcc 时候报bug: Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7& ...