Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

一.JSON简介:
1.JSON(javaScript Object Notation)是一种轻量级的数据交换格式;
2.JSON数据作为目前网络中主流的数据传输格式之一,应用十分广泛;
3.JSON可以表示的数据:
(1)对象:对象表示为”{}”扩起来的内容,数据结构为{key:value,key:value,....}的键值对的结构
例如:
{“name”:”zhangsan”,”age”:20}
(2)数组:数组表示为中括号” [ ]”括起来的内容,数据结构为[value,value,value,.........]或[{key:value,...},{key:value,...}]的单值结构
例如:
[{“name”:”zhangsan”,”age”:20},{“name”:”wangwu”,”age”:25}]
即:

    {
“user”:
[
{“name”:”zhangsan”,”age”:20},
{“name”:”wangwu”,”age”:25}
]
}

二.JSON的官方解析
1.把装配好的JavaBean转换成JSON数据格式

2.把JSON转化成JavaBean对象

3.把集合转化为JSON字符串

4.把数组形式的JSON字符串转化为集合对象

例1(JSON官方解析):
(1)先引入所需jar包
(2)编写代码:
转化工具类(包含了4中转换的方法):

package org.json.official;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.bean.Student;

public class OfficeJSONUtil {

    // 1.将java对象转换成JSON数据格式
    public static String javaToJSON() {
        Student stu = new Student(1, "王昭君", 89.5);
        JSONObject jsonObj = new JSONObject(stu);
        return jsonObj.toString();
    }

    // 2.将JSON转化为JavaBean对象
    public static Student jsonToJavaBean() {
        Student stu = null;
        String jsonStr = "{‘id‘:2,‘name‘:‘杨玉环‘,‘score‘:95.6}";
        try {
            JSONObject jsonObj = new JSONObject(jsonStr);
            int id = jsonObj.optInt("id");
            String name = jsonObj.optString("name");
            double score = jsonObj.optDouble("score");
            stu = new Student(id, name, score);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return stu;
    }

    // 3. 把集合转化为JSON字符串
    public static String listToJSON() {
        List<Student> list = new ArrayList<Student>();
        Collections.addAll(list, new Student(3, "西施", 93.6), new Student(4,
                "貂蝉", 95.3), new Student(5, "平昭阳公主", 94.6));
        JSONArray jsonArr = new JSONArray(list);
        return jsonArr.toString();

    }

    // 4.把数组形式的JSON串转化为集合对象
    public static List<Student> jsonArrayToList() {
        List<Student> list = new ArrayList<Student>();
        String jsonStr ="[{\"score\":93.6,\"name\":\"西施\",\"id\":3},{\"score\":95.3,\"name\":\"貂蝉\",\"id\":4},{\"score\":94.6,\"name\":\"平昭阳公主\",\"id\":5}]";
        try {
            JSONArray jsonArr=new JSONArray(jsonStr);
            for(int i=0;i<jsonArr.length();i++){
                JSONObject jsonObj=jsonArr.optJSONObject(i); //用于获取每一个对象
                int id=jsonObj.optInt("id");
                String name=jsonObj.optString("name");
                double score=jsonObj.optDouble("score");
                Student stu=new Student(id,name,score);
                list.add(stu);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return list;

    }
}

测试代码(主方法):

package org.json.official;

import java.util.List;
import org.json.bean.Student;

public class TestOfJson {

    public static void main(String[] args) {
        //1.JavaBean转化为JSON数据格式
        String jsonStr= OfficeJSONUtil.javaToJSON();
        System.out.println("1.JavaBean转化为JSON数据格式:"+jsonStr);

        // 2.将JSON转化为JavaBean对象
        Student stu=OfficeJSONUtil.jsonToJavaBean();
        System.out.println("2.将JSON转化为JavaBean对象:"+stu);

        // 3. 把集合转化为JSON字符串
        String jsonStr1=OfficeJSONUtil.listToJSON();
        System.out.println("3. 把集合转化为JSON字符串:"+jsonStr1);

        //4.把数组形式的JSON串转化为集合对象
        List<Student> list=OfficeJSONUtil.jsonArrayToList();
        System.out.println("4.把数组形式的JSON串转化为集合对象:");
        for(Student stu1:list){
            System.out.println(stu1);
        }
    }

}

运行结果:

原文地址:http://blog.51cto.com/13501268/2129213

时间: 2024-10-10 12:49:51

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,的相关文章

Java学习系列(二十四)Java正则表达式详解

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/45501777 前言 正则表达式可以说是用来处理字符串的一把利器,它是一个专门匹配n个字符串的字符串模板,本质是查找和替换.在实例演示之前先了解一下Pattern.Matcher这两个工具类,Pattern:编译好的带匹配的模板(如:Pattern.compile("[a-z]{2}");/ / 取2个小写字母):Matcher:匹配目标字符串后产生的结果(如:pattern.m

Java学习系列(二十二)Java面向对象之枚举详解

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/45332565 一.前言 今天我们来讲讲枚举,希望通过这篇博客大家能对枚举有个更全面的了解.枚举是一种实例(大写)数固定的类(不能再创建实例),多用于确定的状态数(如:鼠标上下左右.IM消息已读未读).类型数(如:系统.聊天.添加好友消息,我的他的).模式数(回复.评论模式,刷选.全部模式)等等.枚举和类一样,同样有抽象类.可以实现接口.可含内部类.初始化块,值得注意的是:枚举的构造器无论

Java学习系列(二十)Java面向对象之反射详解

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/45289391 前言 今天讲讲Java中的反射.我们常见的反射多用于JDBC中的加载驱动程序Class.forName("com.mysql.jdbc.Driver");.Struts的MVC.Hibernate中的ORM.Spring中的IOC还有一些其他框架等等.那它有什么好处呢?它的好处就是能够动态的创建对象和编译且能够访问某个类中的所有(包括私有)属性方法及对象的属性方法

Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView

Android学习笔记二十九之SwipeRefreshLayout.RecyclerView和CardView 前面我们介绍了AlertDialog和几个常用的Dialog,ProgressDialog进度条提示框.DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框.这一节我们介绍几个新的API控件SwipeRefreshLayout.RecyclerView和CardView,这几个API控件都是google在Android5.0推出的.下面我们来学

Android学习笔记二十四之ListView列表视图二

Android学习笔记二十四之ListView列表视图二 前面一篇我们介绍了常用的几种适配器的简单实现和ListView的简单使用,这一篇中,我们介绍一下ListView的优化和一些其它的问题. ListView优化方法一 在ListView中,我们最常用的就是自定义Adapter,在我们自定义Adapter中,需要实现两个比较重要的方法getCount()和getView(),前者是负责计算ListView的总Item数,后者是生成Item,有多少个Item就会调用getView()方法多少次

javaweb学习总结(二十八)——JSTL标签库之核心标签【转】

原文地址:javaweb学习总结(二十八)——JSTL标签库之核心标签 一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心标签(用得最多) 国际化标签(I18N格式化标签) 数据库标签(SQL标签,很少使用) XML标签(几乎不用) JSTL函数(EL函数) 三.核心标签库使用说明 JSTL的核心标签库标签共13个,使用这些标签能够完成JSP页面的

angular学习笔记(二十八)-$http(6)-使用ngResource模块构建RESTful架构

ngResource模块是angular专门为RESTful架构而设计的一个模块,它提供了'$resource'模块,$resource模块是基于$http的一个封装.下面来看看它的详细用法 1.引入angular-resource.min.js文件 2.在模块中依赖ngResourece,在服务中注入$resource var HttpREST = angular.module('HttpREST',['ngResource']); HttpREST.factory('cardResource

angular学习笔记(二十六)-$http(4)-设置请求超时

本篇主要讲解$http(config)的config中的timeout项: $http({ timeout: number }) 数值,从发出请求开始计算,等待的毫秒数,超过这个数还没有响应,则返回错误 demo: html: <!DOCTYPE html> <html ng-app = 'HttpGet'> <head> <title>18.4 $http(2)</title> <meta charset="utf-8"

Android学习笔记二十之Toast吐司、Notification通知、PopupWindow弹出窗

Android学习笔记二十之Toast吐司.Notification通知.PopupWindow弹出窗 Toast吐司 Toast吐司是我们经常用到的一个控件,Toast是AndroidOS用来显示消息的一种机制,它与Dialog不同,Toast不会获取到焦点,通常显示一段时间之后就会自动消失,下面我们来介绍Toast的几种常用方式: 第一种,默认显示方式,也是最常用的方式: Toast.makeText(MainActivity.this, "这是默认的显示方式", Toast.LE

马哥学习笔记二十二——高可用集群原理

HA Resource:资源 FailOver:故障转移 FailBack:故障转回 资源粘性:资源是否倾向于留在当前节点 Messaging Layer:集群服务信息层,基于UDP互相传递心跳信息,集群事务信息等 heartbeat(v1,v2,v3) heartbeat v3:heartbeat,pacemaker,cluster-glue corosync cman keepalived ultramonkey CRM:(cluster resource manager)集群资源管理器,统