从服务器端接收数据的时候,那些数据必须以浏览器能够理解的格式来发送。

服务器端的编程语言只能以如下 3 种格式返回数据: HTML XML JSON

JSON一种简单的数据格式,比xml更轻巧。

JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。

JSON的规则很简单:对象是一个无序的“‘名称:值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。 规则如下: 1)映射用冒号(“:”)表示。名称:值 2)并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2 3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2} 4) 并列数据的集合(数组)用方括号(“[]”)表示。

[

   {名称1:值,名称2:值2},

  {名称1:值,名称2:值2}

]

元素值可具有的类型:string, number, object, array, true, false, null

JSON 用冒号(而不是等号)来赋值。每一条赋值语句用逗号分开。整个对象用大括号封装起来。

可用大括号分级嵌套数据。 对象描述中存储的数据可以是字符串,数字或者布尔值。对象描述也可存储函数,那就是对象的方法。

使用Java读取Json数据:

 import java.io.FileReader;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser; public class JsonDemo {
public static void main(String []args) throws Exception{
JsonParser parser = new JsonParser() ;
JsonObject object = (JsonObject)parser.parse(new FileReader("src//JsonTest//test.json"));
// 解析string
System.out.println("name = "+object.get("name").getAsString());
// 解析数组
JsonArray array = object.get("like").getAsJsonArray();
for(int i=0;i<array.size();i++){
JsonObject arrayObject = array.get(i).getAsJsonObject() ;
System.out.println("id = "+arrayObject.get("id").getAsInt() + " say = "+arrayObject.get("say").getAsString());
}
// 解析bool类型
System.out.println("key = "+object.get("key").getAsBoolean());
}
}

Json文件内容:

 {
"name":"奶BerBer",
"like":[
{"id":1,"say":"hello java"},
{"id":2,"say":"hello c++"},
{"id":3,"say":"hello python"}
],
"key":true
}

输出结果:

name = 奶BerBer
id = 1 say = hello java
id = 2 say = hello c++
id = 3 say = hello python
key = true

使用Java创建Json数据:

 import com.google.gson.JsonArray;
import com.google.gson.JsonObject; public class JsonDemo {
public static void main(String []args) throws Exception{
JsonObject object = new JsonObject();
object.addProperty("name","奶BerBer") ; JsonArray array = new JsonArray() ; JsonObject lem1 = new JsonObject() ;
lem1.addProperty("id","1");
lem1.addProperty("say","hello java");
array.add(lem1) ; JsonObject lem2 = new JsonObject() ;
lem2.addProperty("id","2");
lem2.addProperty("say","hello c++");
array.add(lem2) ; JsonObject lem3 = new JsonObject() ;
lem3.addProperty("id","3");
lem3.addProperty("say","hello python");
array.add(lem3) ; object.add("like",array) ;
object.addProperty("key","true") ; System.out.println(object.toString());
}
}

运行结果:

{"name":"奶BerBer","like":[{"id":"1","say":"hello java"},{"id":"2","say":"hello c++"},{"id":"3","say":"hello python"}],"key":"true"}

Json包下载: 链接:https://pan.baidu.com/s/1kULUbQ3 密码:s98k

JSON数据解析及gson.jar包的更多相关文章

  1. JSON数据解析(GSON方式) (转)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 在上一篇博文<Andro ...

  2. Android JSON数据解析(GSON方式)

    要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...

  3. JSON数据解析:Gson(谷歌)和fastjson(阿里巴巴)的异同点

    Gson和fastjson分别为谷歌和阿里巴巴对JSON数据进行处理封装的jar包 Gson(谷歌)和fastjson(阿里巴巴)两者异同点: 相同点:都是根据JSON数据创建相应的类 不同点: 1. ...

  4. java解析json数据用到的jar包

    百度云连接: https://pan.baidu.com/s/1iuQCc7uBO5XtAsNn6hwCew

  5. 使用Gson轻松解决复杂结构的Json数据解析

    转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50961803 JSON简介 JSON(JavaScript Object Notati ...

  6. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  7. 截取HTML中的JSON数据并利用GSON进行解析(Android)

    截取HTML中的JSON数据并利用GSON进行解析(Android) 前言 最近在做的一个Android项目,需要自行搭建服务器,队友选择买了阿里云的服务器ESC产品,在数据获取上,我们采用了Andr ...

  8. 最简单简洁高效的Json数据解析

    一.无图无真相 二.主要代码 1.导入jar包 拷贝fastjson.jar包到projectlibs包下 2.封装工具类JsonUtil.java package com.example.parse ...

  9. JSON数据解析 基础知识及链接收集

    JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...

随机推荐

  1. JavaScript系列----作用域链和闭包

    1.作用域链 1.1.什么是作用域 谈起作用域链,我们就不得不从作用域开始谈起.因为所谓的作用域链就是由多个作用域组成的.那么, 什么是作用域呢? 1.1.1作用域是一个函数在执行时期的执行环境. 每 ...

  2. (11.13)Java小知识!

    今天想要与大家分享一下有关于构造方法的知识! 构造方法的定义与作用 构造方法是一种特殊类型的方法.当一个对象被创建的时候,构造方法用来初始化对象,也就是说构造方法其实是一个名词而不是动词,像我刚刚开始 ...

  3. MyEclipse和Eclipse非常方便的快捷键

    1. ctrl+shift+r:打开资源这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml ...

  4. 线程中WICImage与Bitmap数据转换

    最近项目开发, 要用到线程中对图像进行缩放和二值化处理 为了省事, 图像缩放用的WICImage.ImagingFactory接口, 二值化用的是bitmap.PixelFormat := pf1bi ...

  5. 文本域、bootstrap-table显示以及MySQL三者间的换行符问题

    首先,今天在做项目的时候遇到的一个问题,如何实现文本输入换行以及在前台Bootstrap-table中显示也能够换行. 也许你马上就会想到说,用富文本编辑器,然而我们需要实现的只是文本输入以及换行功能 ...

  6. javaScript额外笔记

    --------------------------------------------------------Part 1javascript:脚本语言辅助开发:网页的前台开发三大块:1.HTML ...

  7. C# 程序集安装与卸载

    下面我们来实现程序集的安装,代码如下: /// <summary>/// 程序集安装与卸载/// </summary>/// <param name="asse ...

  8. Power BI连接SSAS(微软的分析服务)进行权限控制(本地部署)

    尬聊...... 在干活之前先尬聊一会儿 丸子我在10月下旬左右就开始弄power BI连接SSAS进行权限控制的问题,中间也是历经波折,看了网上很多资料,可是都是SSAS怎么进行权限控制,没有SSA ...

  9. iOS多线程--深度解析

    多线程 你们项目中为什么多线程用GCD而不用NSOperation呢? 你有没有发现国外的大牛他们多线程都是用NSOperation? 你能告诉我他们这样做的理由吗? 关系: ①:先搞清两者的关系,N ...

  10. border-sizing属性

    box-sizing属性可以为三个值之一:content-box(default),border-box,padding-box. content-box,border和padding不计算入widt ...