JSON数据转换成Java对象的方法
程序员文章站
2024-02-24 09:53:34
第一种方法,使用 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());
}
}
}