多层嵌套 JSON 格式数据的快速解析 – 热爱改变生活
我的GitHub GitHub |     登录
  • If you can't fly, then run; if you can't run, then walk; if you can't walk, then crawl
  • but whatever you do, you have to keep moving forward。
  • “你骗得了我有什么用,这是你自己的人生”
  • 曾有伤心之地,入梦如听 此歌

多层嵌套 JSON 格式数据的快速解析

Android工具 sinvader 20329℃ 0评论

大家怎么还在搜这个问题啊, 这都是三年前的东西了, 只可以作为参考哈
可以直接使用 Gson 或者 fastjson
以下为原内容


测试 JSON 数据

  1. {
  2. "code": "200",
  3. "message": "测试数据",
  4. "data": {
  5. "imgs": [
  6. "http://7xw2my.com1.z0.glb.clouddn.com/qiniu/2016-7/0f0b37c0786efa955beec97b56fcda6f.jpg"
  7. ],
  8. "kk": [
  9. {
  10. "sdfdsf": "sss"
  11. },
  12. {
  13. "sdfdsf": "ssss"
  14. }
  15. ]
  16. }
  17. }

如果遇到这样的 JSON 格式的数据,你会怎样去解析?
每次碰到它都会很烦躁,所以写了下面的东西,一次性把它给弄出来,省的以后麻烦了。
首先要先创建相对于 JSON 数据的 Bean

Bean 的创建规则

如果属性对应的是一个字符串或数字,其修饰符使用 String —————– 如(public String code;)

如果属性对应的是一个 JSONArray,其修饰符使用 ArrayList, 这个里面的 Bean 要根据 JSONArray 里面的 JSONObject 进行编写。 —————– 如(public ArrayList kk;)

如果属性对应的是一个 JSONObject,其修饰符使用对象的类名—-如:(public static class MyData)

下面是按照上面的规则写好的一个 Bean

  1. public class Bean {
  2. private String code;
  3. private String message;
  4. private MyData data;
  5.  
  6. public String getMessage() {
  7. return message;
  8. }
  9.  
  10. public void setMessage(String message) {
  11. this.message = message;
  12. }
  13.  
  14. public static class Data2 {
  15. private String sdfdsf;
  16.  
  17. public String getSdfdsf() {
  18. return sdfdsf;
  19. }
  20.  
  21. public void setSdfdsf(String sdfdsf) {
  22. this.sdfdsf = sdfdsf;
  23. }
  24.  
  25. }
  26.  
  27. public static class MyData {
  28. private ArrayList kk;
  29. private String[] imgs;
  30. public ArrayList getKk() {
  31. return kk;
  32. }
  33. public void setKk(ArrayList kk) {
  34. this.kk = kk;
  35. }
  36. public String[] getImgs() {
  37. return imgs;
  38. }
  39. public void setImgs(String[] imgs) {
  40. this.imgs = imgs;
  41. }
  42. }
  43. public MyData getData() {
  44. return data;
  45. }
  46. public void setData(MyData data) {
  47. this.data = data;
  48. }
  49. public String getCode() {
  50. return code;
  51. }
  52. public void setCode(String code) {
  53. this.code = code;
  54. }
  55. }

解析的时候只要一句话:

  1. Bean s = (Bean) (SumileJson.parse(str, Bean.class));

解析完了,然后来看怎样获得所有的数据:

  1. String co = "{\"code\":\"200\",\"message\":\"测试数据\",\"data\":{\"imgs\":[\"http://7xw2my.com1.z0.glb.clouddn.com/qiniu/2016-7/0f0b37c0786efa955beec97b56fcda6f.jpg\"],\"kk\":[{\"sdfdsf\":\"sss\"},{\"sdfdsf\":\"ssss\"}]}}";
  2. YingYinBeans bean = (YingYinBeans) SumileJson.parse(co, YingYinBeans.class);
  3. System.out.println(bean.getData().getImgs()[0]);
  4. System.out.println(bean.getData().getKk().get(0).getSdfdsf());

程序输出的结果:

  1. http://7xw2my.com1.z0.glb.clouddn.com/qiniu/2016-7/0f0b37c0786efa955beec97b56fcda6f.jpg
  2. sss

注意:打包的时候,如果要混淆,记得把你的 Bean 也混淆了。因为是反射获取的内容。

开源地址
¥ 有帮助么?打赏一下~

转载请注明:热爱改变生活.cn » 多层嵌套 JSON 格式数据的快速解析


本博客只要没有注明“转”,那么均为原创。 转载请注明链接:sumile.cn » 多层嵌套 JSON 格式数据的快速解析

喜欢 (7)
发表我的评论
取消评论
表情

如需邮件形式接收回复,请注册登录

Hi,你需要填写昵称和邮箱~

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址