Java-JSON的使用

对象转json字符串: JSONObject.toJsonString(对象)
json字符串转对象: JSONObject.parseObject(json字符串,对象.cLass);
数组或者集合转json字符串:JSONArray.toJsonString(对象)
json字符串转数组或集合: JSONObject.parseArray( json字符串,数组或集合中元素对象.cLass);

数组、集合、JSON字符串之间的转换

JSONArray继承与JSON

public static void main(String[] args) {
        //-----------------------数组和JSON字符串的转换----------------------------
        String[] name = {"张三","李四","王五","赵六"};
        System.out.println(name);//[Ljava.lang.String;@14ae5a5
        System.out.println(Arrays.toString(name));//[张三, 李四, 王五, 赵六]
        //将对象转换为JSON格式的字符串
        String str = JSONArray.toJSONString(name);
        System.out.println(str);//["张三","李四","王五","赵六"]


        //-----------------------集合和JSON的转换----------------------------
        List list = new ArrayList();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        System.out.println(list);//[张三, 李四, 王五]
        //将对象转换为JSON格式的数组
        String str = JSONArray.toJSONString(list);
        System.out.println(str);//["张三","李四","王五"]
        //json字符串转换为list对象 第一个参数为json字符串,第二个参数为要转换的对象类型
        List<String> list1 = JSONArray.parseArray(str, String.class);
        System.out.println(list1);//[张三, 李四, 王五]
        
        //-----------------------数组和集合的转换----------------------------
        String[] strings = list1.stream().toArray(String[]::new);
        System.out.println(strings);//[Ljava.lang.String;@1a93a7ca

    }

对象集合

 public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        list.add(new User(1, "张三", 31));
        list.add(new User(2, "王五", 18));
        list.add(new User(3, "赵六", 15));
        list.add(new User(4, "李奇", 28));
        System.out.println(list);
        //[User{id=1, name='张三', age=31}, User{id=2, name='王五', age=18}, User{id=3, name='赵六', age=15}, User{id=4, name='李奇', age=28}]

        //list转成集合
        String jsonString = JSONArray.toJSONString(list);
        System.out.println(jsonString);
        //[{"age":31,"id":1,"name":"张三"},{"age":18,"id":2,"name":"王五"},{"age":15,"id":3,"name":"赵六"},{"age":28,"id":4,"name":"李奇"}]
        //JSON字符串转成集合
        List<User> list1 = JSONArray.parseArray(jsonString, User.class);
        System.out.println(list1);
        //[User{id=1, name='张三', age=31}, User{id=2, name='王五', age=18}, User{id=3, name='赵六', age=15}, User{id=4, name='李奇', age=28}]

    }

键值对与JSON字符串的转换

JSONObject继承与JSON

    public static void main(String[] args) {
        Map<Object, Object> map = new HashMap<>();
        map.put("丈夫1","妻子1");
        map.put("丈夫2","妻子2");
        map.put("丈夫3","妻子3");
        map.put("丈夫4","妻子4");
        System.out.println(map);//{丈夫2=妻子2, 丈夫1=妻子1, 丈夫4=妻子4, 丈夫3=妻子3}
        //map转换为字符串
        String s = JSONObject.toJSONString(map);
        System.out.println(s);//{"丈夫2":"妻子2","丈夫1":"妻子1","丈夫4":"妻子4","丈夫3":"妻子3"}
        //字符串转换为map
        Map map1 = JSONObject.parseObject(s, Map.class);//map.getClass
        System.out.println(map1);//{丈夫2=妻子2, 丈夫1=妻子1, 丈夫4=妻子4, 丈夫3=妻子3}
    }

键值对加对象与JSON的转换

键值对里的对象不能直接解析处理,要进行二次解析。

public static void main(String[] args) {
        Map<String, User> map = new HashMap<>();
        map.put("张三", new User(1, "张三", 31));
        map.put("王五", new User(2, "王五", 18));
        map.put("赵六", new User(3, "赵六", 15));
        map.put("李奇", new User(4, "李奇", 28));
        System.out.println(map);
        //{张三=User{id=1, name='张三', age=31}, 李奇=User{id=4, name='李奇', age=28}, 王五=User{id=2, name='王五', age=18}, 赵六=User{id=3, name='赵六', age=15}}
        //把map转换成JSON字符串
        String jsonString = JSONObject.toJSONString(map);
        System.out.println(jsonString);
        //{"张三":{"age":31,"id":1,"name":"张三"},"李奇":{"age":28,"id":4,"name":"李奇"},"王五":{"age":18,"id":2,"name":"王五"},"赵六":{"age":15,"id":3,"name":"赵六"}}
        //json字符串转换为map
        List<User> lists = new ArrayList<>();
        Map map1 = JSONObject.parseObject(jsonString, Map.class);
        map1.forEach((k,v)->{
            lists.add(JSONObject.parseObject(v.toString(),User.class));
        });
        System.out.println(lists);
        //[User{id=1, name='张三', age=31}, User{id=4, name='李奇', age=28}, User{id=2, name='王五', age=18}, User{id=3, name='赵六', age=15}]
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值