JSON数据转换成Java对象的方法
程序员文章站
2024-02-26 20:44:28
第一种方法,使用 json-lib 。第二种方法,使用 jackson。前两种方法,对相对简单的pojo 对象来说,还是比较容易的。但是相对于嵌套多层的数据来说,复杂度就直...
第一种方法,使用 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());
}
}
}
第二种方法,使用 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());
}
}
}
上一篇: MySQL的常用命令集锦
推荐阅读
-
Java类与对象:方法的定义与调用
-
关于Java跨域Json字符转类对象的方法示例
-
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第7章:数组的定义与使用:课时29:数组与方法
-
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第30章:链表的定义与使用:课时139:根据索引取得数据
-
java连接mysql数据库的方法
-
Java对象StringBuffer类-10-StringBuffer类的基本了解和构造方法
-
Java实现数组去除重复数据的方法详解
-
java 日志的数据脱敏的实现方法
-
Android App中读取XML与JSON格式数据的基本方法示例
-
java中处理json各种各样的转换方法(推荐)