JSON总结(java篇一)

JSON简介

JSON(JavaScript Object Notation)

是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON语法

  • 数据在键值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON值类型

  • number(整数或浮点数)
  • String(字符串,在双引号中)
  • boolean(布尔值,true或false)
  • array(数组,用方括号表示)
  • Object(对象,在花括号中,例如javaScript对象)
  • null

java中的用法

准备工作

  1. 在java中使用json的方法首先要导入第三方jar包,进入json主页http://json.org,然后下载java第三方包,这里我们使用JSON-java这个包。

    点击后进入github下载页面下载jar包。
  2. 这里我使用的是maven项目,所以可以在http://maven.org中搜索JSON-java的坐标。
  3. 在eclipse中创建maven项目,配置好pom.xml

JSON的使用

1. 使用Map集合创建JSON

    /**
* 1 、使用Map创建json
*/
public static void createJSONByMap() {
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("name", "老王");
map.put("age", 35);
map.put("height", 1.73);
map.put("major", new String[] { "理发", "挖掘机" });
map.put("hasGirlFriend", false);
map.put("car", null);
JSONObject json = new JSONObject(map);
System.out.println("方法名:createJSONByMap()---" + json);
}

运行结果:

方法名:createJSONByMap()---{"major":["理发","挖掘机"],"name":"老王","hasGirlFriend":false,"age":35,"height":1.73}

从结果可以看出,car的字段没有打印出来,说明当value为null时转换JSON后不会显示出来

2. 使用javaBean创建JSON

javaBean

package com.hjw.maven.jsonTest;

import java.util.Arrays;

/**
*@author hjw
*@version 创建时间:2016年9月21日 上午11:23:51
* TODO
*/
public class Person { private String name;
private int age;
private double height;
private String[] major;
private boolean hasGirlFriend; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public String[] getMajor() {
return major;
}
public void setMajor(String[] major) {
this.major = major;
}
public boolean isHasGirlFriend() {
return hasGirlFriend;
}
public void setHasGirlFriend(boolean hasGirlFriend) {
this.hasGirlFriend = hasGirlFriend;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", height=" + height
+ ", major=" + Arrays.toString(major) + ", hasGirlFriend="
+ hasGirlFriend + "]";
} }
    /**
* 2、通过javaBean创建json
*/
public static void createJSONByBean() {
Person person = new Person();
person.setName("老王");
person.setAge(35);
person.setHasGirlFriend(false);
person.setHeight(17.2);
person.setMajor(new String[] { "厨师", "编程" });
System.out.println("方法名:createJSONByBean()---" + new JSONObject(person)); }

方法名:createJSONByBean()---{"major":["厨师","编程"],"name":"老王","hasGirlFriend":false,"age":35,"height":17.2}

3. 通过JSONObject创建JSON

    /**
* 1、通过JSONObject来专家json
*/
public static void createJSON() {
JSONObject json = new JSONObject();
Object objNull = null;
json.put("name", "老王");
json.put("age", 35);
json.put("height", 1.73);
json.put("major", new String[] { "理发", "挖掘机" });
json.put("hasGrilFriend", false);
System.out.println("方法名:createJSON1()---" + json);
}

方法名:createJSON()---{"hasGrilFriend":false,"major":["理发","挖掘机"],"name":"老王","age":35,"height":1.73}

4. 读取文件创建JSONObject

在maven项目src/main/resource中创建laowang.json文件,然后引入commons-io的maven坐标

laowang.json
{
"hasGrilFriend": false,
"major": [
"理发",
"挖掘机"
],
"name": "老王",
"age": 35,
"height": 1.73
}

代码:

    /**
* 4、读取文件获取json
*
* @throws IOException
*/
public static void createJsonByFile() throws IOException {
File file = new File(JsonDemo.class.getResource("/laowang.json")
.getFile());
String content = FileUtils.readFileToString(file);
JSONObject json = new JSONObject(content);
System.out.println("name=" + json.getString("name"));
System.out.println("age=" + json.getInt("age"));
System.out.println("height=" + json.getDouble("height"));
System.out.println("hasGirlFriend=" + json.getBoolean("hasGirlFriend"));
System.out.print("major=[");
for (Object str : json.getJSONArray("major")) {
System.out.print(str + ",");
}
System.out.println("]");
}

运行结果:

name=老王

age=35

height=1.73

hasGirlFriend=false

major=[理发,挖掘机,]

5. 通过JSONObject创建json文件

    /**
* 创建josn文件
*
* @throws IOException
*/
public static void createJsonFileByWriter() throws IOException {
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("name", "老王");
map.put("age", 35);
map.put("height", 1.73);
map.put("major", new String[] { "理发", "挖掘机" });
map.put("hasGrilFriend", false);
JSONObject json = new JSONObject(map);
URL url=JsonDemo.class.getResource("/");
String path=url.getPath();
path=path.substring(0, path.indexOf("jsonTest"));
File file = new File(path+"/jsonTest/src/main/resource/laowang1.json");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
json.write(bw);
bw.close();
System.out.println("end");
}

代码运行后会自动在maven项目中的resource路径下生产一个名为laowang1.json的文件,其中jsonTest为项目名

JSON总结(java篇)的更多相关文章

  1. JSON 与JAVA对象之间的转换(转)

    JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换. 一.对普通类型的JSON模式的转换 一 ...

  2. 快速掌握Ajax-Ajax基础实例(Ajax返回Json在Java中的实现)

    (转)实例二:Ajax返回Json在Java中的实现 转自http://www.cnblogs.com/lsnproj/archive/2012/02/09/2341524.html#2995114 ...

  3. json转java对象

    用了平台之后很少再接触到java和js的底层代码,前几天远程帮一个萌新远程调试代码,这个萌新按照网上的教程去将json字符转java对象却一直报错.真相是它的json字符串格式不对,他的明明是一个数组 ...

  4. 根据json生成java实体类

    之前一篇讲过了XML转java实体对象,使用的是JAXB技术,今天给大家推荐一个在线转json到java实体对象: http://www.bejson.com/json2javapojo/new/ 转 ...

  5. JSONObject.fromObject(map)(JSON与JAVA数据的转换)

    JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 上一篇文章中有这么 ...

  6. json学习系列(8)JSON与JAVA数据的相互转换实例

    一.完整案例 先定义一个java实体对象,如下: package com.pcitc.json.cnblog; /** * SimInfo实体对象 * * @Description * @author ...

  7. [转]有哪些值得关注的技术博客(Java篇)

    有哪些值得关注的技术博客(Java篇)   大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...

  8. net.sf.json.JSONException: java.lang.NoSuchMethodException

    在尝试将json对象转换为list时候出现了如下错误 Exception in thread "main" net.sf.json.JSONException: java.lang ...

  9. JSON与JAVA数据的相互转换

    http://www.cnblogs.com/linjiqin/archive/2011/09/19/2181408.html import net.sf.json.JSONArray; import ...

随机推荐

  1. TODO:Node.js pm2使用方法

    TODO:Node.js pm2使用方法 pm2 是一个带有负载均衡功能的Node应用的进程管理器. 当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完 ...

  2. Tomcat的目录结构

    bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe.tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启动T ...

  3. 每天一个linux命令(26):用SecureCRT来上传和下载

    用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem.文 ...

  4. rem与px的转换

    rem与px的转换 引用自http://caibaojian.com/rem-and-px.html A-A+ 前端博客•前端开发教程•rem•3702View0 rem是相对于根元素<html ...

  5. selenium结合最新版的sikuli使用

    sikuli安装,下载sikulixsetup-1.1.0.jar,地址:https://launchpad.net/sikuli/sikulix/1.1.0 在装有Java环境的机器上直接双击jar ...

  6. 通过对表格数据的选择对input的value进行修改

    通过对表格数据的选择对input的value进行修改 $(function(){ $("#tb_gys").datagrid({ url:'getGysinfoList.actio ...

  7. sizzle编译函数

    一个人去完成一件事情,如果派多个人去做的话,只要配合默契,效率比一个人做肯定要高,效率提高,所需的时间就减少了.如果只能一个人完成,那么必须设法提高自己的劳动效率,这个提高可以是量的改变也可以是质的改 ...

  8. 小菜学习Winform(四)MDI窗体(附示例)

    前言 在做winfrom项目的时候我们可能会用到嵌套窗体,就是说一个容器中有多个窗体,可以分别管理和应用这些窗体,.net中提供了一种机制就是MDI,可能大家都会用,这边就简单的介绍下. 简单应用 w ...

  9. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...

  10. 【Java心得总结三】Java泛型上——初识泛型

    一.函数参数与泛型比较 泛型(generics),从字面的意思理解就是泛化的类型,即参数化类型.泛型的作用是什么,这里与函数参数做一个比较: 无参数的函数: public int[] newIntAr ...