JSON数据转换成Java对象的方法

 更新时间:2014年03月16日 08:47:51   作者:  
就目前来讲,将Java对象转换成JSON对象还是相当简单的,但是 将JSON对象转换成Java对象,就相对比较复杂了些
第一种方法,使用 JSON-lib 。
第二种方法,使用 JACKSON。
前两种方法,对相对简单的Pojo 对象来说,还是比较容易的。但是相对于嵌套多层的数据来说,复杂度就直接上去了。
第三种方法,使用GOOGLE 的Gson 来解决了。写过安卓的都知道,这东西,是Google出来的,最大的好处就是,基本不依赖其他的包。用起来自然很爽,取值方式非常灵活。对复杂的JSON 取值,基本统统搞定。
在Gson 中分为两种概念。一个就是 JsonObject 和 JsonArray。具体的看代码
复制代码 代码如下:

package com.mycompany.gsondata; 
import com.google.gson.JsonArray; 
import com.google.gson.JsonObject; 
import com.google.gson.JsonParser; 

/**
 * Hello world!
 *
 */ 
public class App { 

    public static void main(String[] args) { 
        String jsonData = "{\"questionnaireID\": \"QNTest\",\"answerResults\":[{\"questionID\":\"QSTest01\",\"anserContent\":\"cfb7f441-9086-11e3-8cf8-000c2945c442\"},{\"questionID\":\"QSTest01\",\"anserContent\":\"cfb7f441-9086-11e3-8cf8-000c2945c442\"},{\"questionID\":\"QSTest03\",\"anserContent\":\"6b3a9cce-9087-11e3-8cf8-000c2945c442,a086331d-9087-11e3-8cf8-000c2945c442\"},{\"questionID\":\"QSTest01\",\"anserContent\":\"cfb7f441-9086-11e3-8cf8-000c2945c442\"},{\"questionID\":\"QSTest05\",\"anserContent\":\"test测试文字填空\"},{\"questionID\":\"QSTest06\",\"anserContent\":\"3\"},{\"questionID\":\"QSTest07\",\"anserContent\":\"2.2\"}]}"; 
        JsonObject root = new JsonParser().parse(jsonData).getAsJsonObject(); 
        System.out.println(root.get("questionnaireID").toString());//直接取的根节点值 

        JsonArray AnswerList = root.getAsJsonArray("answerResults");//取数组 

        for (int i = 0; i < AnswerList.size(); i++) { 
            System.out.println(AnswerList.get(i).getAsJsonObject().get("questionID").toString()); 
            System.out.println(AnswerList.get(i).getAsJsonObject().get("anserContent").toString()); 
        } 

    } 
}

相关文章

  • 解决因缺少Log4j依赖导致应用启动失败的问题

    解决因缺少Log4j依赖导致应用启动失败的问题

    日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。但这篇文章不是介绍Log4j,这篇文章主要介绍了关于因缺少Log4j依赖导致应用启动失败问题的相关资料,需要的朋友可以参考下。
    2017-04-04
  • java中DecimalFormat四舍五入用法详解

    java中DecimalFormat四舍五入用法详解

    这篇文章主要为大家详细介绍了java中DecimalFormat四舍五入的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Java同步非阻塞模式NIO处理IO数据

    Java同步非阻塞模式NIO处理IO数据

    这篇文章主要介绍了Java同步非阻塞模式NIO处理IO数据,服务器实现模式为一个请求一个线程,即客户端发送的链接请求都会注册到选择器上,选择器轮询到连接有IO请求时才启动一个线程进行处理,需要的朋友可以参考下
    2023-10-10
  • 一看就懂 详解JAVA泛型通配符T,E,K,V区别

    一看就懂 详解JAVA泛型通配符T,E,K,V区别

    泛型从字面上理解,是指一个类、接口或方法支持多种类型,使之广泛化、一般化和更加通用。通配符只有在修饰一个变量时会用到,使用它可方便地引用包含了多种类型的泛型;下面我们来深入了解一下吧
    2019-06-06
  • 浅谈Java数组的一些使用方法及堆栈存储

    浅谈Java数组的一些使用方法及堆栈存储

    下面小编就为大家带来一篇浅谈Java数组的一些使用方法及堆栈存储。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 使用synchronized实现一个Lock代码详解

    使用synchronized实现一个Lock代码详解

    这篇文章主要介绍了使用synchronized实现一个Lock代码详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • SpringBoot整合JWT的实现示例

    SpringBoot整合JWT的实现示例

    JWT是目前比较流行的跨域认证解决方案,本文主要介绍了SpringBoot整合JWT的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 如何解决getReader() has already been called for this request问题

    如何解决getReader() has already been called&

    这篇文章主要介绍了如何解决getReader() has already been called for this request问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • 一篇文章带你入门Java数据类型

    一篇文章带你入门Java数据类型

    下面小编就为大家带来一篇Java的基本数据类型)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-08-08
  • springboot实现配置多个yml文件

    springboot实现配置多个yml文件

    文章主要介绍了在Spring Boot项目中实现多环境配置的三种方式:方式一、多YAML文件配置;方式二、单YAML文件配置;方式三、在pom.xml中指定环境配置,每种方式都有其特点和适用场景
    2025-11-11

最新评论