转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6652250.html 

一:JSON语言规范

一言以蔽之:“一个 :一个键值对,一个{}一个对象,一个[]一个数组”

key:只能是string

value:可以是string、number、boolean、null

  二:Jackson数据绑定方式操作JSON

Jackson操作JSON主要用到两个类:JsonGenerator、objectMapper

准备工作:创建objectMapper,并由objectMapper创建JsonGenerator

ObjectMapper  objectMapper = new ObjectMapper();
JsonGenerator jsonGenerator=objectMapper.getJsonFactory()
.createJsonGenerator(fileoutputStream, encoding);//通过文件流打开一个文本文档,并指明编码格式

1:Java对象转JSON

JavaBean、Map对象、list对象、数组对象转JSON

jsonGenerator.writeObject(bean);
或
objectMapper.writeValue(outputStream,bean);

2:读取JSON字符串转换成Java对象、Map对象、List对象、数组

1)读取JSON字符串转JavaBean

ClassName bean= objectMapper.readValue(json_String, ClassName.class);//传一个class对象作为通过json字符串构造java对象的依据

2)读取JSON字符串转List对象

List<LinkedHashMap<String, Object>> list = objectMapper.readValue(json_string, List.class);

(注意:此处List中的泛型不能指定为某中JavaBean类似,只能用LinkedHashMap,因为泛型转换不能识别到集合中的对象类型)

3)读取JSON字符串转数组

ClassName[] arr = objectMapper.readValue(json_string, ClassName[].class);//同理,传递class对象作为解析JSON字符串的依据

4)读取JSON字符串转Map对象

Map<String, Map<String, Object>> maps = objectMapper.readValue(jsonstring, Map.class);

三:Gson操作JSON

1:Java对象转JSON

1)简单转换(无格式)

Gson gson=new Gson();
String jsonstring=gson.toJson(bean);

2)带格式转换:需要使用builder来生成Gson,通过builder来设定转换格式。

GsonBuilder builder=new GsonBuilder();
builder.setXXX();//改名、缩进等
Gson gson=builder.create();
String jsonstring=gson.toJson();

3)Gson注释制定规则

可以在JavaBean定义时,为某个字段添加Gson注释,指定转换为Json时该字段的别名、格式等。

4)transient

用transient修饰的字段不会被序列化,也就是说不会转换为Json字符串

2:JSON解析

1)简单转换:把Json数据解析为 String:String键值对

Gson gson=new Gson();
ClassName bean=gson.fromJson(jsonstring,class);//解析Json字符串
ClassName bean=gson.f romJson(reader,class);//解析文件中的Json数据

2)带格式转换:根据数据格式解析Json字符串中键值对,使解析达到的对象的字段值符号定义时的类型

GsonBuilder builder=new GsonBuilder();
builder.setXXFormat("数据类型格式");//XX是一种数据类型,参数为该类型数据的格式。比如:Date类型。这样Json数据中符号该格式的内容解析出来就是XX类型而不是String。
Gson gson=builder.create();
ClassName bean=gson.fromJson(jsonstring,class);//解析Json字符串
ClassName bean=gson.f romJson(reader,class);//解析文件中的Json数据

(注意:Java中集合类、数组,转换为Json时都是Json数组;而Json数组转换过来时,则自动根据数组名对应的类型来自动转换成集合类、Java数组)

JSON语言规范与Java中两种解析工具基本使用的更多相关文章

  1. JAVA 中两种判断输入的是否是数字的方法__正则化_

    JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...

  2. java中两种类型变量

    Java中有两种类型的变量,一种是对象类型,另一种是基础类型(primitive type). 对象类型普遍采用引用的方式,比如 List a = new ArrayList(); List b = ...

  3. Java中两种实现多线程方式的对比分析

    本文转载自:http://www.linuxidc.com/Linux/2013-12/93690.htm#0-tsina-1-14812-397232819ff9a47a7b7e80a40613cf ...

  4. java中两种添加监听器的策略

    /*第一种:将事件的处理委托给其他对象,下面的例子是委托给了MyListener(implements ActionListener)*/ 1 import java.applet.Applet; i ...

  5. java中两种单例模式

    //懒汉式(线程不安全) class LazySingleton{ private static LazySingleton singleton; private LazySingleton(){} ...

  6. java中两种发起POST请求,并接收返回的响应内容的方式  (转)

    http://xyz168000.blog.163.com/blog/static/21032308201162293625569/ 2.利用java自带的java.net.*包下提供的工具类 代码如 ...

  7. JavaScript 与 Java 是两种完全不同的语言,无论在概念还是设计上。

    JavaScript 与 Java 是两种完全不同的语言,无论在概念还是设计上. Java(由 Sun 发明)是更复杂的编程语言. ECMA-262 是 JavaScript 标准的官方名称. Jav ...

  8. shell中调用R语言并传入参数的两种步骤

    shell中调用R语言并传入参数的两种方法 第一种: Rscript myscript.R R脚本的输出 第二种: R CMD BATCH myscript.R # Check the output ...

  9. JavaScript中两种类型的全局对象/函数【转】

    Snandy Stop, thinking is the essence of progress. JavaScript中两种类型的全局对象/函数 这里所说的JavaScript指浏览器环境中的包括宿 ...

随机推荐

  1. win7凭据管理、win7多用户远程登录、主机头设置、nuget.org无法访问

    前言  最近遇到的几个问题,然后处理在此对处理方式进行记录一下. 1.服务器共享文件夹,在本机进行访问登录时,每次登录或者每次开机进入都要进行登录的权限认证,这样很麻烦. 2.服务器难免会有多用户同时 ...

  2. 《MATLAB面向对象程序设计》

    <MATLAB面向对象程序设计> 基本信息 作者: 苗志宏    马金强 出版社:电子工业出版社 ISBN:9787121233449 上架时间:2014-6-18 出版日期:2014 年 ...

  3. 基于Vue、Bootstrap的Tab形式的进度展示

    最近基于Vue.Bootstrap做了一个箭头样式的进度展示的单页应用,并且支持了对于一个本地JS文件的检索,通过这个单页应用,对于Vue的理解又深入了一些.在这里把主要的代码分享出来. 本单页应用实 ...

  4. 如何进行Logstash logstash-input-jdbc插件的离线安装

    我们单位的服务器位于隔离区,不允许链接互联网,因此整理了在ELK集群上离线安装Logstash的jdbc input插件的方法,供大家参考. 总体思路是需要一台中转的机器,这台机器需要能够访问互联网, ...

  5. MAPI错误0x80040107

    MAPI错误0x80040107  的解决方案: The MAPI error means there's an "invalid entry" within the contac ...

  6. tcp常见状态

    常见状态 1.建立连接 2.关闭连接

  7. HttpAsyncClient的连接池使用

    代码示例 public static void main(String[] args) throws Exception { ConnectingIOReactor ioReactor = new D ...

  8. JavaScript:RegExp 对象

    ylbtech-JavaScript:RegExp 对象 1.返回顶部 RegExp 对象 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 直接量语法 /pattern/att ...

  9. 中文分词库及NLP介绍,jieba,gensim的一些介绍

    六款中文分词软件介绍: https://blog.csdn.net/u010883226/article/details/80731583 里面有jieba, pyltp什么的.另外下面这个博客有不少 ...

  10. sharepoint 2010 记录管理 对象模型

    首先说一下什么是记录管理:这里有详细的说明 在 网站设置->网站集管理->网站集功能 中启用 “现场记录管理” 启用现场记录管理后在 网站管理 中多了2个功能“内容管理器设置” 和“内容管 ...