JOSN快速入门
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快速入门的更多相关文章
- vue 快速入门 系列 —— vue-cli 上
其他章节请看: vue 快速入门 系列 Vue CLI 4.x 上 在 vue loader 一文中我们已经学会从零搭建一个简单的,用于单文件组件开发的脚手架:本篇,我们将全面学习 vue-cli 这 ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
- grunt快速入门
快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
随机推荐
- linux下服务启动脚本
#!/usr/bin/env python# -*- coding: utf-8 -*-# @File : deployment.py# @Author: Anthony.waa# @Date : 2 ...
- COM基础
为什么说COM的可重用性是建立在二进制级别? COM本身是语言无关,它的标准建立在二进制级别.对于使用COM组件的客户程序,它只需要要使用的COM对象信息就可以通过COM库的帮助创建和使用COM对象, ...
- 双十一只是在搞噱头么?看看ABBYY FineReader就知道了
双十一就这样轰轰烈烈的度过了,想问恢复正常工作日的你还好么,还能好好工作么,十分钟查一次物流的有木有? 由于ABBYY FineReader 12 限量200套半价活动过于火爆,各位小主也是用实际行动 ...
- pickle模块 no attribute 'dumps'
今天写了一个pickle.py的文件练习pickle模块,代码如下: import pickle dic = {"linga": ('football',)} dic2 = {&q ...
- iOS开发——GPUImage源码解析
一.基本概念 GPUImage:一个开源的.基于openGL的图片或视频的处理框架,其本身内置了多达120多种常见的滤镜效果,并且支持照相机和摄像机的实时滤镜,并且能够自定义图像滤镜.同时也很方便在原 ...
- tinymce原装插件源码分析(七)-使能css、script
在tinymce中使用css个script tinymce的编辑器中css和script默认是不起作用的.(编辑器主要面向写文章使用,考虑到xss攻击,默认是不启用的) 需要修改tinymce.js中 ...
- POJ 3517 And Then There Was One( 约瑟夫环模板 )
链接:传送门 题意:典型约瑟夫环问题 约瑟夫环模板题:n个人( 编号 1-n )在一个圆上,先去掉第m个人,然后从m+1开始报1,报到k的人退出,剩下的人继续从1开始报数,求最后剩的人编号 /**** ...
- linux--rbtree 解惑 insert
rbtree.txt 中insert 操作,为何用2级指针?? 2级指针用的还是不熟.心虚. Inserting data in the tree involves first searching f ...
- URAL 1517 Freedom of Choice
Freedom of Choice Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on Ural. Orig ...
- java 日期和字符串互转,依据当天整天时间 得到当天最后一秒的日期时间
java 日期和字符串互转.依据当天整天时间 得到当天最后一秒的日期时间 package com.hi; import java.text.DateFormat; import java.text ...

