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

来源:互联网 发布:pp软件源地址 编辑:程序博客网 时间:2024/05/16 03:59

代码已经修改,请至博客查看:http://sumile.cn

测试JSON数据

  1. {
  2. "error": "0",
  3. "data": [
  4. {
  5. "name": "1",
  6. "value": [
  7. {
  8. "name": "2",
  9. "value": "3"
  10. },
  11. {
  12. "name": "4",
  13. "value": "5"
  14. }
  15. ]
  16. },
  17. {
  18. "name": "6",
  19. "value": [
  20. {
  21. "name": "7",
  22. "value": "8"
  23. },
  24. {
  25. "name": "9",
  26. "value": "10"
  27. }
  28. ]
  29. }
  30. ]
  31. }

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

  1. package cn.sumile.S;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. public class Bean {
  6. public String error;
  7. public ArrayList data;
  8.  
  9. public String getError() {
  10. return error;
  11. }
  12.  
  13. public void setError(String error) {
  14. this.error = error;
  15. }
  16.  
  17. public ArrayList getData() {
  18. return data;
  19. }
  20.  
  21. public void setData(ArrayList data) {
  22. this.data = data;
  23. }
  24.  
  25. public static class Bean2 {
  26. public String name;
  27. public ArrayList value;
  28.  
  29. public String getName() {
  30. return name;
  31. }
  32.  
  33. public void setName(String name) {
  34. this.name = name;
  35. }
  36.  
  37. public ArrayList getValue() {
  38. return value;
  39. }
  40.  
  41. public void setValue(ArrayList value) {
  42. this.value = value;
  43. }
  44.  
  45. @Override
  46. public String toString() {
  47. return "Bean2 [name=" + name + ", value=" + value + "]";
  48. }
  49.  
  50. }
  51.  
  52. public static class Bean3 {
  53. public String name;
  54. private String value;
  55.  
  56. public String getName() {
  57. return name;
  58. }
  59.  
  60. public void setName(String name) {
  61. this.name = name;
  62. }
  63.  
  64. public String getValue() {
  65. return value;
  66. }
  67.  
  68. public void setValue(String value) {
  69. this.value = value;
  70. }
  71.  
  72. @Override
  73. public String toString() {
  74. return "Bean3 [name=" + name + ", value=" + value + "]";
  75. }
  76.  
  77. }
  78. }
  79.  

解析的时候只要一句话:

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

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

  1. Bean s = (Bean) (SumileJson.parse(str, Bean.class));
  2. System.out.println("Error:" + s.getError());
  3. System.out.println("data:" + s.getData().toString());
  4. for (int i = 0; i < s.getData().size(); i++) {
  5. Bean2 b2 = s.getData().get(i);
  6. System.out.println("Bean2--->Name:" + b2.getName());
  7. System.out.println("Bean2--->Value:" + b2.getValue());
  8. for (int j = 0; j < b2.getValue().size(); j++) {
  9. Bean3 b3 = b2.getValue().get(j);
  10. System.out.println("Bean3--->Name:" + b3.getName());
  11. System.out.println("Bean3--->Value:" + b3.getValue());
  12. }
  13. System.out.println();
  14. }

程序输出的结果:

  1. Error:0
  2. data:[Bean2 [name=1, value=[Bean3 [name=2, value=3], Bean3 [name=4, value=5]]], Bean2 [name=6, value=[Bean3 [name=7, value=8], Bean3 [name=9, value=10]]]]
  3. Bean2--->Name:1
  4. Bean2--->Value:[Bean3 [name=2, value=3], Bean3 [name=4, value=5]]
  5. Bean3--->Name:2
  6. Bean3--->Value:3
  7. Bean3--->Name:4
  8. Bean3--->Value:5
  9.  
  10. Bean2--->Name:6
  11. Bean2--->Value:[Bean3 [name=7, value=8], Bean3 [name=9, value=10]]
  12. Bean3--->Name:7
  13. Bean3--->Value:8
  14. Bean3--->Name:9
  15. Bean3--->Value:10
开源地址

我的博客中的原文:sumile

0 0
原创粉丝点击