JSON for java快速入门总结学习

一、JSON介绍

JSON(JavaScript Object Notation),类似于XML,是一种数据交换格式,比如Java产生了一个数据想要给JavaScript,则除了利用XML外,还可以利用JSON;

JSON相比XML的优势是表达起来很简单;官网:http://www.json.org/

JSON是AJAX中的X(就是可以取代XML);          ------出自JSON创始人;

注意:JSON并不是一个文档格式,没有*.json的文档,一般JSON格式的文档存在txt中,而XML可以是一个标准;

json 在线编辑器:http://tools.jb51.net/tools/json/json_editor.htm

二、JSON数据结构

JSON有两种数据结构:

(1)Map,也称为对象;{....}

(2)Array;[......]

也就是说所有的JSON对象都是要以这些形式表示;

1.Map

简单的说就是Java中的Map,名称-值对的形式给出,名称和值之间用“:”隔开,两个Map之间用“,”隔开,一般表示形式如下:

{'key1':'value1','key2':'value2'}

以下为官网的图:

2.Array

就是普通意义上的数组,一般形式如下:

['arr1','arr2','arr3'];

以下为官网的图:

图中的value可以是:

总结:

(1)JSON的数据结构只有两种;

(2)可以嵌套表示,比如Array中可以嵌套Object等;

(3)记住:Object是以{}表示,Array是以[  ]表示;

三、JSON与XML互转示例

前面提到任何的XML都能够转换成JSON包;

1.简单XML

XML格式:

<person>
  <name>xiazdong</name>
  <age>20</age>
</person> 

JSON格式:

{
  "name":"xiazdong",
  "age":20
} 

2.复杂XML

XML格式:

<section>
  <title>BOOK</title>
  <signing>
    <author name="author-1"/>
    <book title="book1" price="$11"/>
  </signing>
  <signing>
    <author name="author-2"/>
    <book title="book2" price="$22"/>
  </signing>
</section> 

JSON格式:

"section":{
    "title":"BOOK",
    "signing":[
    {
  <span style="white-space:pre"> </span> "author":
      {
        "name":"author-1"
      },
      "book":
      {
        "title":"book1",
        "price":"$11"
      }
    },
    {
      "author":
      {
        "name":"author-2"
      },
      "book":
      {
        "title":"book2",
        "price":"$22"
      }
    }
<span style="white-space:pre"> </span> ]}
  } 

注意:XML中的属性也是通过JSON的Map表示;

四、JSON包

如果我们想要使用JSON包,则可以下载JSON包的源代码,并将这些代码添加进Eclipse工程中,即可调用;

如果想要看API文档,可以参见:http://www.JSON.org/java/index.html

JSON包中最常用的两个类就是JSONObject和JSONArray,分别表示两种数据结构;

1.JSONObject代码实例

package com.xiazdong.json; 

import weibo4j.org.json.JSONArray;
import weibo4j.org.json.JSONObject; 

public class Test { 

  public static void main(String[] args) throws Exception{
    JSONObject jsonobj = new JSONObject("{'name':'xiazdong','age':20}");
    String name = jsonobj.getString("name");
    int age = jsonobj.getInt("age");
    System.out.println(name+":"+age);   

  }
}

2.JSONArray代码实例

JSONArray array = new JSONArray(String str); //将String转为JSONArray

int length = array.length(); //返回Array的长度;
package com.xiazdong.json; 

import weibo4j.org.json.JSONArray;
import weibo4j.org.json.JSONObject; 

public class Test { 

  public static void main(String[] args) throws Exception{ 

    JSONArray jsonarray = new JSONArray("[{'name':'xiazdong','age':20},{'name':'xzdong','age':15}]");
    for(int i=0;i<jsonarray.length();i++){
      String name = jsonarray.getJSONObject(i).getString("name");
      int age = jsonarray.getJSONObject(i).getInt("age");
      System.out.println("name="+name);
      System.out.println("age="+age);
    } 

  }
} 

3.嵌套JSONObject和JSONArray代码实例

package com.xiazdong.json; 

import weibo4j.org.json.JSONArray;
import weibo4j.org.json.JSONObject; 

public class Test { 

  public static void main(String[] args) throws Exception{ 

    String str = "{'name':'xiazdong','age':20,'book':['book1','book2']";
    JSONObject obj = new JSONObject(str);
    System.out.println(obj.getJSONArray("book").getString(0));
  }
}

4.JSONStringer代码示例

JSONStringer可以用来快速构建一个JSON格式的文本,并转换成String,可以写入文件;
JSONStringer是JSONWriter的子类;
JSONStringer一般通过object().key().value().key().value().endObject()进行构造;
object()表明开始一个对象,即添加{  ;
endObject()表明结束一个对象,即添加 } ;
array()表明开始一个数组,即添加一个 [ ;
endArray()表明结束一个数组,即添加一个 ] ;
key()表示添加一个key;
value()表示添加一个value;

package com.xiazdong.json; 

import weibo4j.org.json.JSONStringer; 

public class JsonStringerDemo { 

  public static void main(String[] args) throws Exception{
    JSONStringer stringer = new JSONStringer();
    String str = stringer.object().key("name").value("xiazdong").key("age").value(20).endObject().toString();
    System.out.println(str);
  } 

}

复杂JSON格式写入

package com.xiazdong.json; 

import java.io.File;
import java.io.FileReader; 

import weibo4j.org.json.JSONArray;
import weibo4j.org.json.JSONObject;
import weibo4j.org.json.JSONStringer;
import weibo4j.org.json.JSONTokener; 

public class JsonStringerDemo { 

  public static void main(String[] args) throws Exception{ 

    JSONStringer js = new JSONStringer();
    JSONObject obj2 = new JSONObject();
    JSONObject obj3 = new JSONObject();
    JSONObject obj4 = new JSONObject();
    obj4.put("title", "book1").put("price", "$11");
    obj3.put("book", obj4);
    obj3.put("author", new JSONObject().put("name", "author-1")); 

    JSONObject obj5 = new JSONObject();
    JSONObject obj6 = new JSONObject();
    obj6.put("title", "book2").put("price", "$22");
    obj5.put("book", obj6);
    obj5.put("author", new JSONObject().put("name", "author-2")); 

    JSONArray obj7 = new JSONArray();
    obj7.put(obj3).put(obj5); 

    obj2.put("title","BOOK");
    obj2.put("signing", obj7); 

    js.object().key("session").value(obj2).endObject(); 

    System.out.println(js.toString()); 

    PrintWriter out = new PrintWriter(new FileOutputStream(1.txt));
    out.println(js.toString()); 

  } 

}

以上代码生成了如下JSON格式:

{"section":{
    "title":"BOOK",
    "signing":[
    {
      "author":
      {
        "name":"author-1"
      },
      "book":
      {
        "title":"book1",
        "price":"$11"
      }
    },
    {
      "author":
      {
        "name":"author-2"
      },
      "book":
      {
        "title":"book2",
        "price":"$22"
      }
    }
    ]}
  }
}

5.JSONTokener代码示例

JSONTokener是用来读取JSON格式的文件;
JSONObject obj = new JSONObject( new JSONTokener(java.io.Reader));可以从文件中读取一个JSONObject;
JSONArray obj = new JSONArray( new JSONTokener(java.io.Reader)); 可以从文件中读取一个JSONArray;

{
  'name':'xiazdong',
  'book':['book1','book2']
}
package com.xiazdong.json; 

import java.io.File;
import java.io.FileReader; 

import weibo4j.org.json.JSONObject;
import weibo4j.org.json.JSONTokener; 

public class JsonStringerDemo { 

  public static void main(String[] args) throws Exception{
    JSONObject obj = new JSONObject(new JSONTokener(new FileReader(new File("1.txt"))));
    System.out.println(obj.getJSONArray("book").getString(1)); //可以读取book2
  } 

}

复杂JSON格式的读取代码:

{"section":{
    "title":"BOOK",
    "signing":[
    {
      "author":
      {
        "name":"author-1"
      },
      "book":
      {
        "title":"book1",
        "price":"$11"
      }
    },
    {
      "author":
      {
        "name":"author-2"
      },
      "book":
      {
        "title":"book2",
        "price":"$22"
      }
    }
    ]}
  }
}
package com.xiazdong.json; 

import java.io.File;
import java.io.FileReader; 

import weibo4j.org.json.JSONObject;
import weibo4j.org.json.JSONTokener; 

public class JsonStringerDemo { 

  public static void main(String[] args) throws Exception{
    JSONObject obj = new JSONObject(new JSONTokener(new FileReader(new File("1.txt"))));
    System.out.println(obj.getJSONObject("section").getJSONArray("signing").getJSONObject(0).getJSONObject("author").getString("name")); <span style="white-space:pre">   </span>//获取author-1
  } 

} 

总结:

1在Java中JSON格式的String最好用单引号表示;

2.利用JSONObject+JSONTokener能够读取JSON格式文件对象;

3.利用PrintWriter+JSONStringer可以写入JSON文件;

注:由于原本想要试图用JSONWriter写入,但是没有成功;所以只能利用JSONStringer+PrintWriter写入;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java 和 json 对象间转换

    1. json-lib是一个java类库,提供将Java对象,包括beans, maps, collections, java arrays and XML等转换成JSON,或者反向转换的功能. 2. json-lib 主页 : http://json-lib.sourceforge.net/ 3.执行环境 需要以下类库支持 commons-lang 2.5commons-beanutils 1.8.0commons-collections 3.2.1commons-logging 1.1.1e

  • java中实体类和JSON对象之间相互转化

    在需要用到JSON对象封装数据的时候,往往会写很多代码,也有很多复制粘贴,为了用POJO的思想我们可以装JSON转化为实体对象进行操作 package myUtil; import java.io.IOException; import myProject.Student; import myProject.StudentList; import org.codehaus.jackson.map.ObjectMapper; import org.json.JSONArray; import or

  • JSON数据转换成Java对象的方法

    第一种方法,使用 JSON-lib .第二种方法,使用 JACKSON.前两种方法,对相对简单的Pojo 对象来说,还是比较容易的.但是相对于嵌套多层的数据来说,复杂度就直接上去了.第三种方法,使用GOOGLE 的Gson 来解决了.写过安卓的都知道,这东西,是Google出来的,最大的好处就是,基本不依赖其他的包.用起来自然很爽,取值方式非常灵活.对复杂的JSON 取值,基本统统搞定.在Gson 中分为两种概念.一个就是 JsonObject 和 JsonArray.具体的看代码 复制代码 代

  • java json 省市级联实例代码

    复制代码 代码如下: //     获取国家省市区信息$(document).ready(function(){ //从程序获取json格式的数据var info = $request.getAttribute("manualOrderAreaInfo"); var provinceInfo = $("#provinceId");var cityId = $("#cityId"); //清空信息provinceInfo.empty(); //循环

  • 浅谈使用java解析和生成JSON

    JSON概述 JSON即javascript object notation,是javascript对象表示法的子集.具有以下特点: 数据放在键值对中: 数据由逗号分隔: 花括号表示对象: 方括号表示数组. JSON的值可以是: 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true或false) 数组(方括号内) 对象(花括号内) null JSON的基本语法 JSON对象 JSON对象在花括号中书写,对象可以包含多个键值对,例如: { "firstName":"Jo

  • java使用JSONObject实例

    一.引入jar包使用JSONObject必须引用JSON-lib.jar,同时它还依赖于其他包common-lang.jarcommon-beanuitls.jarcommon-collections.jarcommon-logging.jarezmorph.jar二.JSONObject对象使用JSON-lib包是一个java对象.xml.JSON互相转换的包.1.将Java对象转换成 json字符串 复制代码 代码如下: Person p1=new Person();p1.setName("

  • java生成json数据示例

    JsonTools.java 复制代码 代码如下: package com.lihua.json.tools; import net.sf.json.JSONObject; public class JsonTools { public JsonTools() { } /**   * @param key   *            表示json字符串的头信息   * @param value   *            是对解析的集合的类型   * @return   */  //将数据转

  • JAVA对象JSON数据互相转换的四种常见情况

    1. 把java 对象列表转换为json对象数组,并转为字符串 复制代码 代码如下: JSONArray array = JSONArray.fromObject(userlist);     String jsonstr = array.toString(); 2.把java对象转换成json对象,并转化为字符串 复制代码 代码如下: JSONObject object = JSONObject.fromObject(invite);    String str=object.toString

  • Java Web程序实现返回JSON字符串的方法总结

    基础铺垫 在java中,关于json的lib有很多,比如jackjson.fastjson.gson等等,本人都用过,但是对于我等只需要让java对象返回json字符串即可的程序员来说,还是显得过于繁重.而且有些功能定制性很差,比如一个java对象的属性为空时,这些组件都不会输出,于是本人在页面循环遍历列表对象时,总是得判断此属性是否为undefined,这一点让本人很不满意.所以决定花点时间研究下到底是怎么回事. 但经过一上午的细看,发现不管是fastjson还是gson都代码都写得相当的复杂

  • JSON for java快速入门总结学习

    一.JSON介绍 JSON(JavaScript Object Notation),类似于XML,是一种数据交换格式,比如Java产生了一个数据想要给JavaScript,则除了利用XML外,还可以利用JSON; JSON相比XML的优势是表达起来很简单:官网:http://www.json.org/ JSON是AJAX中的X(就是可以取代XML);          ------出自JSON创始人; 注意:JSON并不是一个文档格式,没有*.json的文档,一般JSON格式的文档存在txt中,

  • Java快速入门掌握类与对象及变量的使用

    目录 类 1.什么是类 2.想要知道Java中类是什么 3.怎么写一个类 对象 1.什么是对象 2.创建对象的格式 3.怎么使用对象中的属性 4.怎么使用对象中的行为 5.实例 变量 1.什么是局部变量 2.什么是成员变量 3.成员变量和局部变量的区别 类 1.什么是类 类是事物的属性(外在特征)和行为(具备的功能)的集合 2.想要知道Java中类是什么 我们要先知道现实生活中的类是什么,因为Java源于现实生活. 比如说人"类",为什么我们人类呢,因为我们什么都相似,我们都有共同的外

  • 快速入门python学习笔记

    本篇不是教给大家如何去学习python,有需要详细深入学习的朋友可以参阅:Python基础语言学习笔记总结(精华)本文通过一周快速学习python入门知识总计了学习笔记和心得,分享给大家. ##一:语法元素 ###1.注释,变量,空格的使用 注释 单行注释以#开头,多行注释以''开头和结尾 变量 变量前面不需要声明数据类型,但是必须赋值 变量命名可以使用大小写字母,数字和下划线的组合,但是首字母只能是大小写字母或者下划线,不能使用空格 中文等非字母符号也可以作为名字 空格的使用 表示缩进关系的空

  • Java的JNI快速入门教程(推荐)

    1. JNI简介 JNI是Java Native Interface的英文缩写,意为Java本地接口. 问题来源:由于Java编写底层的应用较难实现,在一些实时性要求非常高的部分Java较难胜任(实时性要求高的地方目前还未涉及,实时性这类话题有待考究). 解决办法:Java使用JNI可以调用现有的本地库(C/C++开发任何和系统相关的程序和类库),极大地灵活Java的开发. 2. JNI快速学习教程 2.1 问题: 使用JNI写一段代码,实现string_Java_Test_helloworld

  • MyBatis入门学习教程(一)-MyBatis快速入门

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO) 首先给大家介绍MyBatis的含义

  • 快速入门Java中的Lambda表达式

    Lambda简介 Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块). Lambda表达式还增强了集合库. Java SE 8添加了2个对集合数据进行批量操作的包: java.util.function 包以及 java.util.stream 包. 流(stream)就如同迭代器(iterator),但附加了许多

  • mybatis快速入门学习教程新手注意问题小结

    什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到 ses

  • java RocketMQ快速入门基础知识

    如何使用 1.引入 rocketmq-client <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.1.0-incubating</version> </dependency> 2.编写Producer DefaultMQProducer produce

  • Java中Jackson快速入门

    Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个.虽然JDK自带了XML处理类库,但是相对来说比较低级,使用本文介绍的Jackson等高级类库处理起来会方便很多. 引入类库 由于Jackson相关类库按照功能分为几个相对独立的,所以需要同时引入多个类库,为了方便我将版本号单独提取出来设置,相关Gradle配置如下. ext { jacksonVersion = '2.9.5' } dependencies { compile group: 'com.fa

  • MyBatis入门学习教程-MyBatis快速入门

    目录 Mybatis 一.快速开始 1.创建 Maven 项目 2.导入 Maven 依赖 3.配置 Maven 插件 4.新建数据库,导入表格 5.编写 Mybatis 配置文件 6.编写实体类 7.编写 mapper 接口 8.编写 mapper 实现 9.Mybatis 配置文件中,添加 mapper 映射 10.编写 Mybatis 工具类 11.测试 二.日志添加 1.添加 Maven 依赖 2.添加 log4j 配置 3.Mybatis 中配置 LOG 4.执行测试 三.Mybati

随机推荐