JSONObject  
   JSONObject jsonObject = new JSONObject(strJson);
JSONArray jsonArray = jsonObject.getJSONArray("data");
{}  Jsonstr      bean      bean1....


[]


大括号{}
Gson gson = new Gson();
bean  b1 = gson.fromJson(Jsonstr,bean.class)




中括号[]:
 Gson
gson = new Gson();

List<bean>  list = gson.fromJson(jsonString, new TypeToken<List<bean.class>>() {}.getType());



Gson:


使用泛型获取javaBean(核心函数)


(1),对象类型数据
public static <T> T getPerson(String jsonString, Class<T> cls) {

        T
t = null;

        try
{

            Gson
gson = new Gson();

            t
= gson.fromJson(jsonString, cls);

        }
catch (Exception e) {

            //
TODO: handle exception

        }

        return
t;

    }

(2),集合类型数据

public static <T> List<T> getPersons(String jsonString, Class<T> cls) {

        List<T>
list = new ArrayList<T>();

        try
{

           Gson
gson = new Gson();

            list
= gson.fromJson(jsonString, new TypeToken<List<cls>>() {

            }.getType());

        }
catch (Exception e) {

        }

        return
list;

    }
(3),集合中含map类型数据

public static List<Map<String, Object>> listKeyMaps(String jsonString) {

        List<Map<String,
Object>> list = new ArrayList<Map<String, Object>>();

        try
{

            Gson
gson = new Gson();

            list
= gson.fromJson(jsonString,

                    new
TypeToken<List<Map<String, Object>>>() {

                    }.getType());

        }
catch (Exception e) {

            //
TODO: handle exception

        }

        return
list;

    }

eg:
public static Mode getJson2(String json){

Gson gson = new Gson();
Mode mode = gson.fromJson(json, Mode.class);

return mode;
}








FastJson:

(1),集合类型数据
 List<T> datas = JSON.parseArray(str,T.class):解析一个数组    {jsonArray} [,,,,,,]
(2),对象类型数据
  T t = JSON.parseObject(str,T.class):解析一个对象  {jsonObject}  {}




FastJson对象的知识点:

fastjson 是一个性能极好的用 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。

主要特点

  • 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson

  • 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)

  • 零依赖(没有依赖其它任何类库除了JDK)


一 、生成Json:
JavaBean、List<JavaBean>、List<String>、List<Map<String,Object>>

  1. String jsonString = JSON.toJSONString(obj);

二、解析Json:
(1)JavaBean
            Class class= JSON.parseObject(jsonString, Class.class);  
(2)List<JavaBean
            List<Class> class=JSON.parseArray((jsonString, Class.class);  

(3)List<String>

            List<String> listString = JSON.parseArray(jsonString, String.class);  

(4)List<Map<String,Object>>

        List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new                                TypeReference<List<Map<String,Object>>>(){});  

解析JSON的三种方式的更多相关文章

  1. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

  2. go 中解析JSON的三种姿势

    背景 这是一篇写给0-1年新人的文章,短平快的教会你如何解析json字符串. 示例Json 假设有如下json字符串: { "userName":"admin" ...

  3. android中解析文件的三种方式

    android中解析文件的三种方式     好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...

  4. js中将字符串转换成json的三种方式

    1,eval方式解析,恐怕这是最早的解析方式了.如下: function strToJson(str){ var json = eval('(' + str + ')'); return json; ...

  5. C#解析json的两种方式

    C#中Json转换主要使用的几种方法! 这篇主要介绍2.4.第三种方法使用的比较局限,所以我没有深入学习. 第二种方法 我使用比较多的方式,这个方法是.NET内置的,使用起来比较方便 A.利用seri ...

  6. 字符串转换成JSON的三种方式

    采用Ajax的项目开发过程中,经常需要将JSON格式的字符串返回到前端,前端解析成JS对象(JSON ).ECMA-262(E3) 中没有将JSON概念写到标准中,但在 ECMA-262(E5) 中J ...

  7. unity解析json的两种方式

    一直比较钟情于json,用来做数据交互,堪称完美!下面简单说一下unity使用C#脚本如何解析json数据吧. 一.写解析类,借助于JsonUtility.FromJson 直接给个例子吧 1.jso ...

  8. ajax操作json的三种方式

    一. 什么是json? 1. JSON是一种轻量级的数据交换格式 2. JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在 ...

  9. 解析JSON有俩种方式:JSONObject和GSON

    JSONObject: //JSONObject解析JSON文件 private void parseJSONWithJSONObject(String json_data) { try { JSON ...

随机推荐

  1. hdu 5438(拓扑+bfs)

    题意:建图,删掉所有连接点小于2的点,直到不能删为止,问最后剩余的联通块中,点的数量是奇数的联通块中的点的权值和. 思路:拓扑删点,bfs计算 #include <iostream> #i ...

  2. hihocoder #1159 : 扑克牌

    描述 一副不含王的扑克牌由52张牌组成,由红桃.黑桃.梅花.方块4组牌组成,每组13张不同的面值.现在给定52张牌中的若干张,请计算将它们排成一列,相邻的牌面值不同的方案数. 牌的表示方法为XY,其中 ...

  3. Notepad++连接Centos

    Notepad++设置 插件 -- > plugin Manager --> show plugin manager --> NppFtp  安装重启notepad++ 插件 --& ...

  4. HWM、PCTFREE、PCTUSED

    什么是水线(High Water Mark)? HWM通常增长的幅度为一次5个数据块,原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很象一个水库的历 ...

  5. 试说明采用双缓冲技术如何进行I/O操作

    输入设备先将第一个缓冲区装满数据,在输入设备向第二个缓冲区装数据时,处理机就可以从第一个缓冲区取出数据进行处理:当一个缓冲区的数据处理完毕,若第二个缓冲区已经装满,则处理机又可以从第二个缓冲区取出数据 ...

  6. Delphi下DLL编程知识(转)

    一.  DLL和系统变量     在 System 单元声明的变量中,有几个对DLL编程有特殊影响.IsLibrary 可以检测代码是执行在应用程序中还是执行在DLL中,在应用程序中 IsLibrar ...

  7. PostgreSQL 查看单表大小

    1. 在数据库中查单个表 select pg_size_pretty(pg_relation_size('table_name')); 2. 查出并按大小排序 SELECT table_schema ...

  8. pycharm和shell中的sys.path不一样

    用pip安装了一个模块,在pycharm中不能调用,然后发现shell和pycharm中的sys.path不一样. 纳尼?还能不一样? 很明显左边的pycharm的sys.path中少了三个重要的路径 ...

  9. 正则替换replace中$1的用法以及常用正则

    一.repalce定义 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. stringObject.replace(regexp/substr,replacement)参数一 ...

  10. python脚本批量生成数据

    在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家 ...