JSON【1】
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/ JSON[jar]包下载
JSON是什么?
是一种轻量级的数据交换格式,完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
JSON 的基本语法?
- 数据使用名/值对表示。
- 使用大括号保存对象,每个名称后面跟着一个 ':'(冒号),名/值对使用 ,(逗号)分割。
- 使用方括号保存数组,数组值使用 ,(逗号)分割。
2JSON 支持以下两种数据结构:
名/值对集合: 这一数据结构由不同的编程语言支持。
有序的值列表: 包括数组,列表,向量或序列等等。
JSON 语法规则
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON 值
JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
JSON 文件
- JSON 文件的文件类型是 ".json"
- JSON 文本的 MIME 类型是 "application/json"
JSON 数据类型
JSON 格式支持以下数据类型:
| 类型 | 描述 |
|---|---|
| 数字型(Number) | JavaScript 中的双精度浮点型格式 |
| 字符串型(String) | 双引号包裹的 Unicode 字符和反斜杠转义字符 |
| 布尔型(Boolean) | true 或 false |
| 数组(Array) | 有序的值序列 |
| 值(Value) | 可以是字符串,数字,true 或 false,null 等等 |
| 对象(Object) | 无序的键:值对集合 |
| 空格(Whitespace) | 可用于任意符号对之间 |
| null | 空 |
JSON 对象
- 创建一个空对象:
1、获取属性
var JSONObj = {};
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };
JSONObj.name:通过对象点属性获取属性值
2、获取值
var myObj, x;
myObj = { "name":"w3cschool", "alexa":8000, "site":null };
x = myObj["alexa"];
3、获取对象与值
<script>
var myObj = { "name":"w3cschool", "alexa":8000, "site":null };
for (x in myObj) {
document.getElementById("demo").innerHTML +=x +":"+myObj[x] + "<br>";
}
</script>
4、遍历json数组
myObj = [{
"name":"runoob",
"alexa":10000,
"sites": {
"site1":"www.runoob.com",
"site2":"m.runoob.com",
"site3":"c.runoob.com"
}
}
]
for(var i=0;i<myObj.length;i++){
var name=myObj[i].name;
var alexa=myObj[i].alexa;
var sites=myObj[i].sites;
var site1=sites.site1;
var site2=sites.site2;
var site3=sites.site3;
alert("姓名:"+name+",现金:"+alexa+"参数1:"+site1+"参数2"+site2+"参数3"+site3);
}
JSON 与 XML 对比
冗余度
XML 文件庞大,文件格式复杂,传输占带宽;JSON 数据格式比较简单,易于读写,格式都是压缩的,占用带宽小。
XML 比 JSON 冗余,因此对我们来说编写 JSON 会更快。
数组用法
XML 被用来描述结构化数据,不包含数组;而 JSON 包含数组。
解析
可以使用 JavaScript 的 eval 方法解析 JSON。当针对 JSON 应用这个方法时,eval 返回描述的对象。
json格式
JSON结构共有2种:
- 对象结构;
- 数组结构;
对象结构
对象结构是使用大括号“{}”括起来的,大括号内是由0个或多个用英文逗号分隔的“关键字:值”对(key:value)构成的。
实列:
var jsonObj = { "键名1":值1, "键名2":值2, …… "键名n":值n }
JSON数组结构
JSON数组结构是用中括号“[]”括起来,中括号内部由0个或多个以英文逗号“,”分隔的值列表组成。
语法:
var arr =
[
{
"键名1":值1,
"键名2":值2
},
{
"键名3":值3,
"键名4":值4
},
……
]
JSON有两种数据:1.无序的对象结构;2.有序的数组结构
1.无序的对象结构
无序的对象结构在不同语言中称法不同,比如在Python中称为字典,在JS中称为JSON对象……
总之就是键/值对组合形式。
2.有序的数组结构
有序的的数组结构,即代码片断2所展示的结构。
将数组作为有序数组进行转换JSON,就可以得到有序的JSON数组结构。
对象:
var people = { "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }, { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" }, { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" } ], "authors": [ { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" } ], "musicians": [ { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }, { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" } ] }
修改 JSON 数据
people.musicians[1].lastName = "Rachmaninov";
转换回字符串【JS中的转换】
String newJSONtext = people.toJSONString();
在 Java 中使用 JSON
JSON 和 Java 实体映射
JSON.simple 实体映射从左侧到右侧为解码或解析,实体映射从右侧到左侧为编码。
| JSON | Java |
|---|---|
| string | java.lang.String |
| number | java.lang.Number |
| true | false | java.lang.Boolean |
| null | null |
| array | java.util.List |
| object | java.util.Map |
解码时,java.util.List 的默认具体类是 org.json.simple.JSONArray,java.util.Map 的默认具体类是 org.simple.JSONObject。
在 Java 中编码 JSON
下面这个简单的示例展示了使用 java.util.HashMap 的子类 JSONObject 编码一个 JSON 对象。这里并没有提供顺序。如果你需要严格的元素顺序,请使用 JSONValue.toJSONString(map) 方法的有序映射实现,比如 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,"is_vip":true,"num":100,"name":"foo"}
JSON 与 Ajax
<button type="button" onclick="loadJSON()">异步更新数据</button>
JSON【1】的更多相关文章
- 如何在ASP.NET中用C#将XML转换成JSON 【转】
本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方 ...
- Jackson 框架,轻易转换JSON【转】
Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在 ...
- jquery 遍历 json【转】
jquery 遍历 json <HTML> <HEAD> <meta http-equiv="content-Type" content=" ...
- WEB API 返回类型设置为JSON 【转】
http://blog.sina.com.cn/s/blog_60ba16ed0102uzc7.html web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返 ...
- 【Open-Falcon】Linux下安装Open-Falcon
一.Open-Falcon组件简述 [Open-Falcon绘图相关组件] Agent: 部署在目标机器采集机器监控项 Transfer : 数据接收端,转发数据到后端Graph和Judge Gra ...
- 【Android】与服务器实现JSON数据通信
一.前言 作为一名移动端开发人员,具备一定的服务端开发能力也是非常必要的,本篇博客讲述如何在Android和服务器之间实现JSON数据通信交互,博客内容基于另外一篇博客:[Web]Eclipse + ...
- [翻译]Json.NET API-Linq to Json Basic Operator(基本操作)【转】
在Json.NET开源的组件的API文档中看到其中有个Linq To Json基本操作.详细看了其中API 中Linq to SQL命名空间下定义类方法.以及实现, 觉得参与Linq 来操作Json从 ...
- JSON和JAVA的POJO的相互转换【转载】
该类中用用到的jar包:参加文章<使用json-lib进行Java和JSON之间的转换[转载]> import java.util.Collection; import java.util ...
- C# 将MSMQ消息转换成Json格式 【优化】
C# 将MSMQ消息转换成Json格式 [优化] 转换函数: private string ConvertToJSON(string label, string body) { //TODO: co ...
随机推荐
- [ kvm ] 学习笔记 6:virsh 命令及功能详解
1. 虚拟机管理操作 attach-device 从XML文件附加设备 attach-disk 附加磁盘设备 attach-interface 连接网络接口 autostart 自动启动一个域 blk ...
- idea中maven项目下载源码的方式的
当我们打开class文件的时候,右上角有个Download Sources的超链接,点击就可以下载源码了. 下载源码后,就变成java文件了.
- 【编程基础】CppLint工具使用过程
前言 coding最好要形成一定的编程风格,一般常用的开源风格有google code style,可以使用cpplint工具检查是否符合该编程风格. 目录 1. linux系统使用过程: 2. wi ...
- 超详细的Tensorflow模型的保存和加载(理论与实战详解)
1.Tensorflow的模型到底是什么样的? Tensorflow模型主要包含网络的设计(图)和训练好的各参数的值等.所以,Tensorflow模型有两个主要的文件: a) Meta graph: ...
- java-socket-demo的实现
目录 前言 IO通讯模型 IO通讯模型简介 1. 阻塞式同步IO 2. 非阻塞式同步IO 3. 多路复用IO(阻塞+非阻塞) 4. 异步IO Java对IO模型的支持 注意点及实现方案 TCP粘包/拆 ...
- maven 中配置多个mirror的问题
公司搭建的maven私服做镜像,有使用aliyun的镜像,还有其他地方的, 默认情况下配置多个mirror的情况下,只有第一个生效.那么我们可以将最后一个作为默认值,前面配置的使用环境变量动态切换. ...
- 【VS开发】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
1.htonl ()和ntohl( ) u_long PASCAL FAR ntohl (u_long netlong); u_short PASCAL FAR ntohs (u_short nets ...
- Django 之memcached的应用
memcached介绍: memcached之前是danga的一个项目,最早是为LiveJournal服务的,当初设计师为了加速LiveJournal访问速度而开发的,后来被很多大型项目采用.官网是w ...
- linux ubuntu 网卡配置---固定IP
需要修改/etc/network/interfaces和/etc/resolvconf/resolv.conf.d/base两个文件. 1) /etc/network/interfaces文件: 首先 ...
- HTTP_HOST , SERVER_NAME 区别
当端口是80的时候,他们的内容是一样的. 但是当端口不是80的时候,就不一样了. # HTTP_HOST = SERVER_NAME:SERVER_PORT /** * 获取当前的host */ pu ...