JSON定义

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

JSON用途

  • 使用基于JavaScript的应用程序,其中包括浏览器扩展和网站

  • 使用JSON格式序列化和结构化的数据传输网络连接

  • 这主要用于服务器和Web应用程序之间的数据传输

  • Web服务和API采用JSON格式提供公共数据

  • 它可以用来与现代编程语言

JSON的特点

  • 易于读写JSON

  • 轻量级的基于文本的交换格式

  • 独立语言

JSON 语法规则

JSON 语法是 JavaScript 对象表示语法的子集。
  • 数据在键值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON 名称/值对

JSON 数据的书写格式是:名称/值对。
名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}

  JSON格式支持的数据类型有以下:

类型 描述
Number 在JavaScript中的双精度浮点格式
String 双引号的反斜杠转义的Unicode
Boolean true 或 false
Array 值的有序序列
Value 它可以是一个字符串,一个数字,真的还是假(true/false),空(null )等
Object 无序集合键值对
Whitespace 可以使用任何一对中的令牌
null empty

以下转自:易百教程网

JSON和Java实体之间的映射

JSON.simple实体映射从左侧向右侧解码或解析,并映射实体从右侧到左侧编码。

JSON Java
string java.lang.String
number java.lang.Number
true|false ava.lang.Boolean
null null
array java.util.List
object java.util.Map

虽然解码,默认 java.util.List的具体类是具体类 org.json.simple.JSONArray 和默认 java.util.Map 是org.json.simple.JSONObject。

下面是一个简单的例子来编码JSONObject使用Java的JSON对象的一个子类的java.util.HashMap 无序。如果您需要严格的顺序元素使用方法JSONValue.toJSONString(映射)有序映射实现作为 java.util.LinkedHashMap等。

import org.json.simple.JSONObject;

class JsonEncodeDemo
{
public static void main(String[] args)
{
JSONObject obj = new JSONObject(); obj.put("name", "foo");
obj.put("num", new Integer(100));
obj.put("balance", new Double(1000.21));
obj.put("is_vip", new Boolean(true)); System.out.print(obj);
}
}

  

虽然上述程序的编译和执行,这将产生以下结果:

{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

以下是另一个例子,它显示了使用Java的JSONObject 的 JSON对象流:

import org.json.simple.JSONObject;

class JsonEncodeDemo
{
public static void main(String[] args)
{
JSONObject obj = new JSONObject(); obj.put("name","foo");
obj.put("num",new Integer(100));
obj.put("balance",new Double(1000.21));
obj.put("is_vip",new Boolean(true)); StringWriter out = new StringWriter();
obj.writeJSONString(out); String jsonText = out.toString();
System.out.print(jsonText);
}
} 

虽然上述程序的编译和执行,这将产生以下结果:

{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"} 

在Java的JSON解码

下面的例子利用的JSONObject 和JSONArray JSONObject 是一个java.util.Map JSONArray是一个java.util.List,所以可以对其进行访问 Map 和List 的标准操作。

import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser; class JsonDecodeDemo
{
public static void main(String[] args)
{
JSONParser parser=new JSONParser();
String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
try{
Object obj = parser.parse(s);
JSONArray array = (JSONArray)obj;
System.out.println("The 2nd element of array");
System.out.println(array.get(1));
System.out.println(); JSONObject obj2 = (JSONObject)array.get(1);
System.out.println("Field \"1\"");
System.out.println(obj2.get("1")); s = "{}";
obj = parser.parse(s);
System.out.println(obj); s= "[5,]";
obj = parser.parse(s);
System.out.println(obj); s= "[5,,2]";
obj = parser.parse(s);
System.out.println(obj);
}catch(ParseException pe){
System.out.println("position: " + pe.getPosition());
System.out.println(pe);
}
}
}

虽然上述程序的编译和执行,这将产生以下结果:

The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}} Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]

JAVA & JSON详解的更多相关文章

  1. Spring Boot 之使用 Json 详解

    Spring Boot 之使用 Json 详解 简介 Spring Boot 支持的 Json 库 Spring Web 中的序列化.反序列化 指定类的 Json 序列化.反序列化 @JsonTest ...

  2. Java内部类详解

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

  3. 黑马----JAVA迭代器详解

    JAVA迭代器详解 1.Interable.Iterator和ListIterator 1)迭代器生成接口Interable,用于生成一个具体迭代器 public interface Iterable ...

  4. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  5. Java虚拟机详解----JVM常见问题总结

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. JSON详解(转)

    JSON详解 JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交换格 ...

  7. [转] Java内部类详解

    作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...

  8. Java面向对象详解

    Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...

  9. java 乱码详解_jsp中pageEncoding、charset=UTF -8"、request.setCharacterEncoding("UTF-8")

    http://blog.csdn.net/qinysong/article/details/1179480 java 乱码详解__jsp中pageEncoding.charset=UTF -8&quo ...

随机推荐

  1. 点击div外面该div消失

    <head> <meta charset="UTF-8"> <title></title> <script type=&quo ...

  2. 盘点mysql中容易被我们误会的地方

    引语:mysql作为数据库的一大主力军,到处存在于我们各种系统中,相信大家都不陌生!但是,你知道你能用不代表你知道细节,那我们就来盘点盘点其中一些我们平时不太注意的地方,一来为了有趣,二来为了不让自己 ...

  3. Windows 远程停止iis服务

    最近遇到一个小需求,需要重启远程计算机的iis服务. 需求背景是这样的,用jenkins 做ci的时候, 由于项目是有单独的web服务器,项目虽然是一套, 但是分为A,B,C三个web系统,其中A,B ...

  4. RAR和ZIP:压缩大战真相

    转:http://fqd2eh4y.blog.163.com/blog/static/69195855200801035015857 前言--王者归来? 等待足足两年之久,压缩霸主WinZip终于在万 ...

  5. JAVA学习Swing章节标签JLabel中图标的使用

    package com.swing; import java.awt.Color; import java.awt.Component; import java.awt.Container; impo ...

  6. ES6转码器babel的使用

    1. 进入ES6的项目,执行 npm init // 初始化package.json 2. 在与package.json同一目录下编写配置文件 .babelrc { "presets&quo ...

  7. Inno setup 安装*.inf文件_示例

    nno setup 调用*.Inf文件的条目区段名称_示例 首先自己编写一个INF文件来供 Inno setup 进行测试: ;复制以下代码到记事本然后另存为123.inf .然后把123.inf文件 ...

  8. 《精通移动app测试实战:技术、工具和案例》新书上市

    本书是测试专家.性能测试专家.专业畅销书作者--于涌,多年实战经验的总结,涵盖主流的测试工具,包括众多的测试实例,涵盖单元测试.功能测试.性能测试.UI测试.手游测试.自动化测试.测试用例管理.持续集 ...

  9. Activiti 查看流程图

    package com.mycom.processDefinition; import java.io.File; import java.io.IOException; import java.io ...

  10. mysqld.exe 占了400M内存的问题

    最近遇到了服务器总是停机的问题,虽然它自己只有2G的内存,不过实际部署的应用访问量非常小,也不至于2G就不够用,所以开始了给服务器瘦身的计划. 看着任务管理器里面的各个进程,发现吃内存最厉害的是mys ...