Java操作Json

Json相关知识

  1. 简介:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
  2. 用法:

    • 以”{“开始,以”}”结束。每个名称后跟一个”:”,多个名称对之间用”,”分割。
    • 数组是值的有序集合,一个数组以”[“开头,以”]”结尾。多个值之间用”,”分割。
    • 值可以是双引号括起来的字符串,数值,true,false,null,对象,或数组。这些结构可以嵌套。
  3. JSON和XML的比较

    • 可读性:JSON和XML的可读性不相上下。
    • 可扩展性:XML天生有很好的扩展性,相对于XML,JSON的扩展性稍弱。
    • 解析难度:XML解析要考虑父、子节点,相对复杂,而JSON的解析难度几乎为0。
    • 总结:XML比较适合于标记文档,而JSON却更适合于数据交换处理。
  4. JSON对象:{"name":"gouwa","age":23}
  5. JSON数组:{"person":[{"name":"gousheng","age":24},{"name":"zhangsan","age":23}]}

Java操作Json的几种方式

  1. Gson

    • 构造方法Gson()
    • Json字符串转对象或集合:fromJson(jsonStr,Class)
    • 集合或对象转Json字符串:toJson(JsonElement jsonElement)

        @Test
    public void testGson(){
        Gson gson = new Gson();
        String json = "{\"id\":1,\"sex\":\"男\",\"name\":\"gouwa\"}";
        //Json字符串转对象
        Student student = gson.fromJson(json, Student.class);
        System.out.println(student);
        //对象转Json字符串
        String jsonstr = gson.toJson(student);
        System.out.println(jsonstr);
        //Json字符串转集合,注意改字符串的格式
        String json02 = "[{\"id\":1,\"sex\":\"男\",\"name\":\"gouwa\"},"
                + "{\"id\":2,\"sex\":\"男\",\"name\":\"gousheng\"}]";
        //获取集合类型
        Type listType = new TypeToken<List<Student>>(){}.getType();
                //Json字符串转集合
        List<Student> list = gson.fromJson(json02, listType);
        for(Student s : list){
            System.out.println(s.toString());
        }
        //集合转Json字符串
        List<Student> list02 = new ArrayList();
        list02.add(new Student(1,"gouwa","男"));
        list02.add(new Student(2,"gousheng","男"));
        System.out.println(gson.toJson(list02));        
    }


2. JSONObject:json对象,{key:value}


  • 构造方法JSONObject()、JSONObject(Map map)、JSONObject(String str)等
  • 普通方法:
    增加:accumulate(key,value)、put(key,value)
    删除:clear()、remove(key)
    查询:get(key)、isEmpty()、containsKey(key)、size()
    其他:fromObject(Object)对象转json,JSONObject转对象:toBean(JSONObject,Class)


        @Test
    public void testJSONObject(){
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("1", "一");
        jsonObj.put("2", "二");
        jsonObj.accumulate("3", "三");
        System.out.println(jsonObj.toString());//{"1":"一","2":"二","3":"三"}
        System.out.println(jsonObj.containsKey("1"));//true
        //转为Set集合
        Set entrySet = jsonObj.entrySet();
        Iterator iterator = entrySet.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());//1=一     2=二    3=三
        }
        System.out.println(jsonObj.size());//3

        //Java对象转Json
        JSONObject fromObject2 = JSONObject.fromObject(new Student(1,"haha","heihei"));
        //JSONObject转对象
        Student student = (Student)JSONObject.toBean(fromObject2,Student.class);
        System.out.println(student);//Student [id=1, name=haha, sex=heihei]
        System.out.println(fromObject2);//{"sex":"heihei","name":"haha","id":1}

        //测试JSONArray,JSONArray里面存的是JSONObject
                //JSONArray,json数组,使用[],里面是一条条json格式的数据
        JSONArray jsonArr = new JSONArray();
        JSONObject jsonObj2 = new JSONObject();
        jsonObj2.put("1", "一");
        jsonObj2.put("2", "二");
        jsonObj2.accumulate("3", "三");
        jsonArr.add(jsonObj);
        jsonArr.add(jsonObj2);
        System.out.println(jsonArr);//[{"1":"一","2":"二","3":"三"},{"1":"一","2":"二","3":"三"}]
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值