JSON for java快速入门总结学习_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写入;

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, json
, for
, json入门
json快速入门
,以便于您获取更多的相关知识。

时间: 2024-08-29 09:33:22

JSON for java快速入门总结学习_java的相关文章

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

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

NetBeans IDE 6.0 Java快速入门指南

欢迎使用 NetBeans IDE! 本教程提供 NetBeans IDE 工作流程的简单介绍和快速指南.我们将指导大家创建一个简单的 "Hello World" Java 控制台应用程序.完成此教程之后,您将具备如何在 IDE 中创建.编译和运行应 用程序的基本知识. 本教程可在 10 分钟之内完成. 完成本教程之后,您可以继续学习 NetBeans IDE 的 在线文档中心.该部分提供的教程全面介绍了众 多 IDE 特性和编程技巧,可应用于各种应用程序类型.如果对 "He

Java快速入门,从这六条技能开始

一.掌握静态方法和属性 静态方法和属性用于描述某一类对象群体的特征,而不是单个对象的特征.Java中大量应用了静态方法和属性,这是一个通常的技巧.但是这种技巧在很多语言中不被频繁地使用.理解静态方法和属性对于理解类与对象的关系是十分有帮助的,在大量的Java规范中,静态方法和属性被频繁使用.因此学习者应该理解静态方法和属性.Java在方法和属性的调用上是一致的,区别只表现在声明的时候,这和c++是不同的. 二.重视接口 在面向对象早期的应用中大量使用了类继承.随着软件工程理论的不断发展,人们开始

JavaWeb Spring开发入门深入学习_java

1 Spring基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来构架多层JavaEE系统的框架,它的主要目地是简化企业开发. Spring以一种非侵入式的方式来管理你的代码,Spring提倡"最少侵入",这也就意味着你可以适当的时候安装或卸载Spring,Spring让java亮了. (开放–闭合原理),这里是闭原则. 2 开发spring所需要的工具 (这里先将spring2.5 ,后面3.0) 2.1 Spring的jar包 到http://www.sprin

spring快速入门实例教程_java

本文实例讲述了spring的基本配置与控制反转.分享给大家供大家参考.具体如下: 这里我们采用了maven构建java项目,没有采用maven的同样适用. 1. 创建maven项目,我创建的项目名称为springdemo. 2. 添加依赖包,我是通过maven添加的包,maven相关配置如下: 复制代码 代码如下: <dependency>     <groupId>org.springframework</groupId>     <artifactId>

JAVA TIMER简单用法学习_java

Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率.看个简单的例子: 复制代码 代码如下: import java.io.IOException;import java.util.Timer; public class TimerTest {     public static void main(String[] args){           T

java基础入门篇学习笔记

符号类型: 1.在C和C++中,int表示的整型与目标机器相关.在16位cpu上整型占2字节,在32位上占4字节:而在intel pentium的cpu上, C和C++整型依赖于具体的OS,对于DOS和Windows3.1,整型占2字节,当Windows使用32位模式时,整型占4字节. java没有无符号类型. 2.float类型的数值有一个后缀F.没有的浮点数值默认为double类型(也可以在后面添加后缀D以示区分). 一):这种方法方便,我就使用这种方法  代码如下 复制代码 float  

java设计模式之单例模式学习_java

1 概述 单例模式有几个好处: (1)某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销. (2)省去了new操作符,降低了系统内存的使用频率,减轻GC压力. (3)有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了. 2 详解 单例模式常用的写法有如下这么两种. 2.1 饿汉式 如果应用程序总是创建并使用单例模式,或者在创建和运行时压力不是很大的情况下,可以使用一个私有静态变量,提前把对象创建好. 复制代码 代码如下: package org.sc

json快速入门学习教程

JSON快速入门 计算机语言中三种数据 1.标量 一个单独的字符串或者数字 比如"成都":7  2.序列 若干相关的数据按一定的顺序并列在一起(数组或列表) 比如"北京,成都":7 8 9 3.映射 名/值对 即数据名称与相对应的值 又称散列(hash)或字典 字典等等 比如 "四川省会:成都" JSON(JavaScript Object Notation)是一种轻量级的数据交换格式 JSON的四个基本规则 (1)并列的数据之刘用逗号(&quo