第二种方法,使用 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()); } } }
更多json数据转换成java对象的方法。
