• java与json,一篇就够了


    本示例使用的json包为阿里的fastjson

    首先写三个工具类(seter和geter方法省略,自行补上):

    1 /**
    2  * 屏幕实体类
    3  */
    4 public class Screen {
    5 
    6     private String resolution; // 分辨率
    7     private String size; // 显存大小
    8     
    9 }
    1 /**
    2  * 内存条实体类
    3  */
    4 public class Memory {
    5 
    6     private String size; // 大小
    7     private String brand; // 品牌
    8 
    9 }
     1 /**
     2  * 电脑实体类
     3  */
     4 public class Computer {
     5 
     6     private int id; // id
     7     private String brand; // 品牌
     8     private Double price; // 价格
     9     private Screen screen; // 屏幕
    10     private List<Memory> memory; // 内存条
    11 
    12 }

    测试类,直接上代码:

     1 /**
     2  * 测试类
     3  */
     4 public class T01 {
     5 
     6     public static void main(String[] args) {
     7         // 1. 《自定义对象》转《json》
     8         Computer c1 = getComputer();
     9         JSONObject obj = JSONObject.parseObject(JSONObject.toJSONString(c1));
    10         System.out.println(obj);
    11         System.out.println("---------------------------------------------------------------------------");
    12 
    13         // 2. 《json》转《自定义对象》
    14         String str = obj.toJSONString();
    15         Computer c2 = JSONObject.parseObject(str, Computer.class);
    16         System.out.println(c2.toString());
    17         System.out.println("---------------------------------------------------------------------------");
    18 
    19         // 3. 《列表》转《JSONArray》
    20         List<Computer> computers = getList();
    21         JSONArray ja = JSON.parseObject(JSONArray.toJSONString(computers), JSONArray.class);
    22         System.out.println(ja.toJSONString());
    23         System.out.println("---------------------------------------------------------------------------");
    24 
    25         // 4. 《JSONArray》转《列表》
    26         List<Computer> list = JSONArray.parseArray(ja.toJSONString(), Computer.class);
    27         list.forEach(System.out::println);
    28         System.out.println("---------------------------------------------------------------------------");
    29 
    30         // 5. 《数组》转《JSONArray》
    31         // 用Arrays的asList方法将数组转换成List,然后按照步骤3转换就可以了
    32         List<Memory> ms = Arrays.asList(new Memory[] { new Memory("8G", "金士顿"), new Memory("4G", "三星") });
    33         ms.forEach(System.out::println);
    34         System.out.println("---------------------------------------------------------------------------");
    35 
    36         // 6. 《JSONArray》转《数组》
    37         Computer[] cs = new Computer[list.size()];
    38         list.toArray(cs); // 先按照步骤4将JSONArray转成list,再转成数组
    39         for (Computer computer : cs) {
    40             System.out.println(computer);
    41         }
    42     }
    43 
    44     private static List<Computer> getList() {
    45         List<Memory> ms1 = Arrays.asList(new Memory[] { new Memory("8G", "金士顿"), new Memory("4G", "三星") });
    46         Screen s1 = new Screen("1024*768", "16G");
    47         Computer c1 = new Computer(1, "戴尔", 5678.9, s1, ms1);
    48 
    49         List<Memory> ms2 = Arrays.asList(new Memory[] { new Memory("16G", "惠普"), new Memory("8G", "森海") });
    50         Screen s2 = new Screen("1024*768", "8G");
    51         Computer c2 = new Computer(2, "联想", 1234.5, s2, ms2);
    52 
    53         List<Memory> ms3 = Arrays.asList(new Memory[] { new Memory("32G", "联想"), new Memory("8G", "纽曼") });
    54         Screen s3 = new Screen("1024*768", "16G");
    55         Computer c3 = new Computer(3, "苹果", 4567.8, s3, ms3);
    56 
    57         return Arrays.asList(new Computer[] { c1, c2, c3 });
    58     }
    59 
    60     private static Computer getComputer() {
    61         List<Memory> ms = Arrays.asList(new Memory[] { new Memory("16G", "金士顿"), new Memory("8G", "三星") });
    62         return new Computer(7, "外星人", 12345.689, new Screen("1024*768", "16G"), ms);
    63     }
    64 
    65 }
  • 相关阅读:
    setStyleSheet来设定窗口部件的样式
    Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
    Qt编程—去掉标题栏和设置窗口透明用法
    php设计模式总结
    典型的MVC架构图
    搜索引擎设计分析
    社区论坛设计分析
    (二) vim的Tabbar插件
    目录结构设计分析
    用户注册系统分析
  • 原文地址:https://www.cnblogs.com/Oven5217/p/7553288.html
走看看 - 开发者的网上家园