1.JSON介绍

(1)JSON是一种与开发语言无关的,轻量级的数据格式,全称 JavaScript Object  Notation,易于阅读和编写,语言解析和生产

(2)JSON数据类型表示

数据结构:Map、Array

基本类型:String、number、true、false、null

Map:

使用花括号 {} 标识的键值对结构,key必须是String类型,value为任何基本类型或数据结构

Array:

使用中括号 [] 来起始,并用逗号来分割元素,元素可以是任何类型,就是普通意义上的数组

基本类型:待续。。。。

(3)JSON数据演示:

{

"name":“王小二”  ,

"age" :25 ,

"birthday" :"1995-01-01" ,

"project" :["理发","挖掘机"] ,

"hasGrilfriend" : false ,

"house":false ,

"car" :{ }

}

注 :  JSON里面没有日期或时间这类数据格式 ,所有的key使用String类型

  • 数据在键值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

(4)JSON的使用

方法JSONObject不规范,我们可以 单击右键使用Refactor中的rename修改方法名,方便地进行同步修改,所有被引用的地方都会被同步改写

JSON Editor Online生成结果:

(5)使用HashMap够建JSON

(6)使用Java Bean创建JSON

Java Bean即一个实体对象(C#中的叫法),可以重用

(7)解析JSON

从文件中读取JSON(依赖 commons-io)(待续。。。。。。。http://www.imooc.com/video/12680  慕课网视频)

(8)说一说 TypeToken 吧

GSON提供了 TypeToken 这个类来帮助我们捕获像List<MyZhuiHaoDetailModel>这样的泛型信息。

private List<MyZhuiHaoDetailModel> listLottery = new ArrayList<MyZhuiHaoDetailModel>();

Gson gson=new Gson();

listLottery =  gson.fromJson(object.getString("lists"),

new TypeToken<List<MyZhuiHaoDetailModel>>() {  }.getType());

上文创建了一个匿名内部类,这样,Java编译器就会把泛型信息编译到这个匿名内部类里,然后在运行时就可以被 getType()方法用反射API提取到。

下面来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。我们一般都会碰到两种情况,转成单一实体对象和

转换成对象列表或者其他结构。

eg:

》转成单一实体对象:

json字符串为:{"name":"name0","age":0}

代码:需要提供两个参数,分别是json字符串以及需要转换对象的类型。

Person person = gson.fromJson(str, Person.class);

》转换成对象列表

List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());

for(int i = 0; i < ps.size() ; i++)

{

Person p = ps.get(i);

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

}

注:如果我没有写大括号{};就是TypeToken<List<Person>>()后面的这个{},表示很普通的new一个对象,如果那个类的构造方法是私有的,

肯定不能直接new了,否则就会编译报错。加上大括号表示你new了一个匿名内部类的对象,比如new TypeToken<List<Person>>(){},这个匿名内部

 类继承自TypeToken类。。你可以在大括号里面像写其他普通类代码一样随意写代码。。你可以在里面定义个方法等等。。

《匿名内部类》
比如我们给一个按钮加监听。。比如
JButton btn = new JButton("test");
btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { }
});
 btn.addActionListener()方法接受的是一个ActionListener类型的对象。。而ActionListener是一个接口。。不能直接new。。所以本来我们应该写一个类实现
ActionListener接口。。然后这里给他传一个那个实现类的对象。。但是。。我们不想那么麻烦了。。因为这种情况太多。。所以我们直接在这里创建了那个类。。
之所以叫匿名。。就是我们没有给他取名字就让他叫ActionListener接口的名字。。然后在这里实现那个方法。。 待续。。。。。。

Newtonsoft.Json是支持序列化和反序列化DataTable,DataSet,Entity Framework和Entity的。
C# 中后台传json数据给前台时: 1.OptOut 类中所有公有成员会被序列化,如果不想被序列化,可以用特性JsonIgnore

2.OptIn  所有的成员不会被序列化,类中的成员只有标有特性JsonProperty的才会被序列化,当类的成员很多,但客户端仅仅需要一部分数据时,很有用

3.    JsonProperty   实体中定义的属性名可能不是自己想要的名称,但是又不能更改实体定义,这个时候可以自定义序列化字段名称。

 

 
 
 

JOSN快速入门的更多相关文章

  1. vue 快速入门 系列 —— vue-cli 上

    其他章节请看: vue 快速入门 系列 Vue CLI 4.x 上 在 vue loader 一文中我们已经学会从零搭建一个简单的,用于单文件组件开发的脚手架:本篇,我们将全面学习 vue-cli 这 ...

  2. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  3. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  4. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  5. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  7. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  8. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

  9. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

随机推荐

  1. POJ 2923 DP

    题意: 两辆车去运一堆货物,货物数量小于等于10,问最少需要几趟能把货物全部运到目的地. 思路: 思路很简单,就是状态压缩成二进制.判断一下每个状态能不能运输.再进行一下DP. 设s[]数组里记录所有 ...

  2. 弹出ifame页面(jquery.reveal.js)

    <body> <a data-reveal-id="myModalDailyModify" data-animation="fade" tit ...

  3. vue入门--初始化

    VUE初始化时,可以用vue init webpack-simple或者vue init webpack.前者是简易版的工程,后者是标准的初始化.工程创建成功后,打开发现两个的目录结构有很大不同.si ...

  4. Python3字符串 详解

    Python3 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可. Python 访问字符串中的值 P ...

  5. Python写99乘法表

    #!/usr/bin/python# -*- encoding:utf-8 -*- for i in range(1,10):    s=''    for j in range(1,i+1):    ...

  6. PHP的分页

    页面的效果 页面的css @CHARSET "UTF-8"; *{ margin:0; padding:0; } body{ width:800px; margin:0 auto; ...

  7. ZBrush曲线功能介绍

    在ZBrush®中曲线功能是一个非常有用的工具.插入笔刷,曲线笔刷,拓扑和许多地方都会用到它.生成曲线的方式有很多种.可以使用重拓扑引导线,可以使用笔触菜单下曲线功能中的框架网格,可以使用ZBrush ...

  8. 路飞学城Python-Day35

    08-初识SQL语句 数据库客户端操作的内容(增查改删): 1.操作数据库 操作数据库 增(本质上就是创建一个本地文件夹) create database db1 charset utf8; 查 查看 ...

  9. man帮助命令

    linux系统提供可比较丰富的帮助手册,man是manual(说明书)的缩写,在日常的linux系统管理中经常会用到. 语法: man(选项)(参数) 选项: -a:在所有的man帮助手册中搜索: - ...

  10. VUE:UI组件库(Mint UI & Elment)

    VUE:UI组件库 常用 1)Mini UI: a 主页:http://mint-ui.github.io/#!/zh-cn b 说明:饿了么开源的基于vue的移动端UI组件库 2)Elment a ...