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. Castle中AdditionalInterfaces用法介绍

    首先见下图(图一),其中FooController是一个没有实现任何Interface的空类.需要实现的效果是:通过FooController对象调用FooService的Do方法.设置这一不常见的场 ...

  2. SqlServer英文单词全字匹配

    环境:Vs2013+Sql Server2012 问题:现在数据库记录如下: Sentence列保存的是英文的句子,我现在想找出所有包含“I”(单词)的句子,如果我用 Sentence like '% ...

  3. Objective-C 装饰模式--简单介绍和使用

    装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 比如游戏机有一个GamePad类, 现在要增加一个作弊功能(例如100 ...

  4. Sublime Text3 配置 NodeJs 环境

    前言 大家都知道,Sublime Text 安装插件一般从 Package Control 中直接安装即可,当我安装 node js 插件时候,直接通过Package Control 安装,虽然插件安 ...

  5. Red Gate(SQLToolbelt)SQL Server的安装与注册(破解)

    Red Gate(SQLToolbelt)是SQL Server辅佐工具 1.SQL Compare 比较和同步SQL Server数据库结构 2.SQL Data Compare 比较和同步SQL ...

  6. 【JQ+锚标记实现点击页面回到顶部】

    前言:今天想写个页面常用到的[点击回到页面顶部或是首页的功能],生活和职场一样,总会有低谷的时候,这个时候咱也别怂.别怂.别怂,说三遍!那都不是事,工作没了,再找呗,就像我上周五,团队解散那天,我是笑 ...

  7. 详解CSS的相对定位和绝对定位

    CSS的相对定位和绝对定位通常情况下,我们元素的position属性的值默认为static 就是没有定位,元素出现在正常的文档流中,,这个时候你给这个元素设置的left,right,bottom,to ...

  8. 免费获取WP之类的开发者权限或免费使用Azure 2015-10-19

    上一次弄wp真机调试的时候,卡住了,这里讲一下怎么解决(http://www.cnblogs.com/dunitian/p/4870959.html) 进这个网址注册一下:https://www.dr ...

  9. 我和linux的第二十二天

    这几天学校的事情比较多,空闲时间也有,但没有利用起来.前些天听国学课,发觉自己心性还是不很成熟,以前自觉遇到君子应用君子的方法相处,遇到小人用小人的方法对待,老师一句话,疏清了自己.当我们用小人的方法 ...

  10. Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)

    0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...