• 3个不同jar包的JSONObject的区别


    • com.alibaba.fastjson.JSONObject
    • net.sf.json.JSONObject
    • org.json.JSONObject
    java对象和json数据之间的转换方式一般有两种,一种是引用第三方的jar包,如Gson(谷歌)、Fastjson(阿里)、Jackson等,这种方式优点是语法精练,可以实现一句话转化,但缺点是会引入庞大的第三方库。
    第二种是直接使用Java自带的org.json解析,但这个库功能比较基础,解析会写很多重复的代码。

      

    一 、com.alibaba.fastjson.JSONObject的使用

    1 POM.xml

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.51</version>
    </dependency>
    

      

    2 Json字符串与Map、List、object之间的相互转换

      import java.util.ArrayList;
      import java.util.HashMap;
      import java.util.List;
      import java.util.Map;
      
      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONArray;
      import com.alibaba.fastjson.JSONObject;
       
     public class TestFastJson {
      
          public static void main(String[] args){
              json2JsonObject();//将Json字符串转换为JSONObject对象
              json2JavaBean();//将Json字符串转换为JavaBean对象
              json2JsonArray();//将Json字符串转换为JSONArray对象
              json2JavaBeanList();//将Json字符串转换为JavaBean的集合
              javaBean2Json();//将JavaBean转换为Json格式的数据
              javaBean2JsonObject();//将JavaBean转换为JSONObject对象
              json2ListInMap();//从Json字符串的Map中获取List对象
              list2JsonInMap();//将含list的Map对象转换为Json字符串
              stringToMap();//json字符串转map
              mapToString();//map转json字符串
              mapToJsonObject();//map转json对象
              testList2String();//list转json字符串
          }
          
          private static void json2JsonObject() {
              String s = "{"name":"peter"}";
              JSONObject object = JSON.parseObject(s);
              System.out.println(object.get("name"));
          }
         
         private static void json2JavaBean() {
             String s = "{"id":"17051801","name":"lucy"}";
             User user = JSON.parseObject(s, User.class);
             System.out.println(user.getId());
             System.out.println(user.getName());
         }
         
         private static void json2JsonArray() {
             String s = "[{"id":"17051801","name":"lucy"},{"id":"17051802","name":"peter"}]";
             JSONArray array = JSON.parseArray(s);
             for (int i = 0; i < array.size(); i++) {
                 //JSONArray中的数据转换为String类型需要在外边加"";不然会报出类型强转异常!
                 String str = array.get(i)+"";
                 JSONObject object = JSON.parseObject(str);
                 System.out.println(object.get("name"));
             }
         }
         
         private static void json2JavaBeanList() {
             String s = "[{"id":"17051801","name":"lucy"},{"id":"17051802","name":"peter"}]";
             List<User> list = JSON.parseArray(s, User.class);
             for (User user : list) {
                 System.out.println(user.getName());
             }
         }
         
          private static void javaBean2Json() {
             User user = new User("17051801", "lucy");
             String string = JSON.toJSONString(user);
             System.out.println(string);
         }
         
         private static void javaBean2JsonObject() {
             User user = new User("17051801", "lucy");
             JSONObject json = (JSONObject) JSON.toJSON(user);
             System.out.println(json.get("id"));
         }
         
         private static void json2ListInMap() {
             String s = "{json:[{id:"17051801","name":"lucy"},{id:"17051802","name":"peter"},"
                     + "{id:"17051803","name":"tom"},{id:"17051804","name":"lily"}]}";
             //将Json字符串转换为JSONObject对象,并取出list对象的值
             JSONObject object = JSON.parseObject(s);
             Object objArray = object.get("json");
             String str = objArray+"";
             //方式1:转换成JSONArray对象形式
             JSONArray array = JSON.parseArray(str);
             for (int i = 0; i < array.size(); i++) {
                 JSONObject obj = JSON.parseObject(array.get(i)+"");
                 System.out.println(obj.get("name"));
             }
             //方式2:转换成List<JavaBean>形式
             List<User> list = JSON.parseArray(str, User.class);
             for (User user : list) {
                 System.out.println(user.getName());
             }
         }
         
         private static void list2JsonInMap() {
             //方式1:构建一个带有list的JavaBean对象
             School school = new School();
             school.setId("1");
             school.setName("schoolA");
             
             User user1 = new User();
             user1.setId("17051801");
             user1.setName("lucy");
             User user2 = new User();
             user2.setId("17051802");
             user2.setName("peter");
             
             school.getStudents().add(user1);
             school.getStudents().add(user2);
             //将JavaBean对象转换成Json字符串
             String string1 = JSON.toJSONString(school);
             System.out.println(string1);
             
             //方式2:构建一个带有list的Map对象
             Map<String, Object> map1 = new HashMap<String,Object>();
             map1.put("id", "17051801");
             map1.put("name", "lucy");
             
             Map<String, Object> map2 = new HashMap<String,Object>();
             map2.put("id", "17051802");
             map2.put("name", "peter");
             
             List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
             list.add(map1);
             list.add(map2);
             
             Map<String, Object> map = new HashMap<String,Object>();
             map.put("id", "1");
             map.put("name", "schoolA");
             map.put("students", list);
             //将map对象转换成Json字符串
             String string2 = JSON.toJSONString(map);
             System.out.println(string2);
         }
     
          private static void stringToMap(){
              String str = "{"age":"24","name":"cool_summer_moon"}";
              JSONObject  jsonObject = JSONObject.parseObject(str);
              //json对象转Map
              Map<String,Object> map = (Map<String,Object>)jsonObject;
              System.out.println("map对象是:" + map);
              Object object = map.get("age");
              System.out.println("age的值是"+object);
         }
         
         private static void mapToString(){
             Map<String,Object> map = new HashMap<>();
             map.put("age", 24);
             map.put("name", "cool_summer_moon");
             String jsonString = JSON.toJSONString(map);
             System.out.println("json字符串是:"+jsonString);
         }
     
         private static void mapToJsonObject(){
            Map<String,Object> map = new HashMap<>();
            map.put("age", 24);
            map.put("name", "cool_summer_moon");
            JSONObject json = new JSONObject(map);
            System.out.println("Json对象是:" + json);
     
         }
     
         /** 
         * 测试包装类型的List转换为json字符串 
         */   
        public static void testList2String() {  
            List<Long> longs = new ArrayList<Long>();  
            longs.add(1L);  
            longs.add(2L);  
            longs.add(3L);  
            String actual = JSON.toJSONString(longs);  
            Assert.assertEquals("[1,2,3]", actual);  
        }
     
    }
    

    二 、org.json.JSONObject的使用

    1.引入org.json依赖

    		<dependency>
    			<groupId>org.json</groupId>
    			<artifactId>json</artifactId>
    			<version>20160810</version>
    		</dependency>
    

      

    3.JSONObject转javaBean

        public static void main(String[] args) {
            String str="{"student":[{"name":"leilei","age":23},{"name":"leilei02","age":23}]}";
            Student stu = null;
            List<Student> list = null;
            try {
                ObjectMapper objectMapper=new ObjectMapper();
                StudentList studentList=objectMapper.readValue(str, StudentList.class);
                list=studentList.getStudent();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            for(Student s:list){
                System.out.println(s.getName());
            }
        }
    
      ObjectMapper objectMapper=new ObjectMapper();
      out = objectMapper.readValue(org.json.JSONObject.valueToString(arg0), OutputObject.class);
    

    三 net.sf.json.JSONObject的使用

    1 引入maven依赖

    最后一行需要保留,有两个jdk版本的实现:json-lib-2.1-jdk13.jar和json-lib-2.1-jdk15.jar

         <dependency>
                <groupId>net.sf.json-lib</groupId>
                <artifactId>json-lib</artifactId>
                <version>2.4</version>
                <classifier>jdk15</classifier>
            </dependency>
    

      

    使用范例

    package json;
    
    import net.sf.json.JSON;
    import net.sf.json.JSONObject;
    import net.sf.json.xml.XMLSerializer;
    
    public class JSONObject_1_3 {
    public static void javaToJSON() {
    System.out.println("java代码封装为json字符串");
    JSONObject jsonObj = new JSONObject();
    jsonObj.put("username", "张三");
    jsonObj.put("password", "123456");
    System.out.println("java--->json 
    " + jsonObj.toString());
    }
    
    public static void jsonToJAVA() {
    System.out.println("json字符串转java代码");
    String jsonStr = "{"password":"123456","username":"张三"}";
    JSONObject jsonObj = JSONObject.fromString(jsonStr);
    String username = jsonObj.getString("username");
    String password = jsonObj.optString("password");
    System.out.println("json--->java
     username=" + username
    + "	 password=" + password);
    }
    
    public static void jsonToXML() {
    System.out.println("json字符串转xml字符串");
    String jsonStr = "{"password":"123456","username":"张三"}";
    JSONObject json = JSONObject.fromString(jsonStr);
    XMLSerializer xmlSerializer = new XMLSerializer();
    xmlSerializer.setRootName("user_info");
    xmlSerializer.setTypeHintsEnabled(false);
    String xml = xmlSerializer.write(json);
    System.out.println("json--->xml 
    " + xml);
    }
    
    public static void javaBeanToJSON() {
    System.out.println("javabean转json字符串");
    UserInfo userInfo = new UserInfo();
    userInfo.setUsername("张三");
    userInfo.setPassword("123456");
    JSONObject json = JSONObject.fromBean(userInfo);
    System.out.println("javabean--->json 
    " + json.toString());
    }
    
    public static void javaBeanToXML() {
    System.out.println("javabean转xml字符串");
    UserInfo userInfo = new UserInfo();
    userInfo.setUsername("张三");
    userInfo.setPassword("123456");
    JSONObject json = JSONObject.fromBean(userInfo);
    XMLSerializer xmlSerializer = new XMLSerializer();
    String xml = xmlSerializer.write(json, "UTF-8");
    System.out.println("javabean--->xml 
    " + xml);
    }
    
    public static void xmlToJSON(){
    System.out.println("xml字符串转json字符串");
    String xml = "<?xml version="1.0" encoding="UTF-8"?><user_info><password>123456</password><username>张三</username></user_info>";
    JSON json=XMLSerializer.read(xml);
    System.out.println("xml--->json 
    "+json.toString());
    }
    
    public static void main(String args[]) {
      javaToJSON();
      jsonToJAVA();
      jsonToXML();
      javaBeanToJSON();
      javaBeanToXML();
      xmlToJSON();
    }
    }
    

    转自:https://blog.csdn.net/zhengTornado/article/details/102832587

    个人理解,如有错误,欢迎指正!
  • 相关阅读:
    Element库的Vue版本ElementUI的本地引入方法
    在Win7操作系统上安装VS2017报错:安装程序清单签名验证失败
    [转]五大主流浏览器及四大内核
    [转]idea2021.1破解版 附安装教程免激活码
    [转]Node.js安装详细步骤教程(Windows版)
    [转]Windows系统下彻底删除Windows.old 文件夹的方法
    Springboot+Vue进行Web开发时特别需要注意的小事项
    基带信号与频带信号,基带传输与频带传输各是什么?两者有什么区别?
    springboot的Web项目编译运行时提示错误:Field userService in com.cetc.UserManger.controller.UserController required a bean of type 'com.cetc.UserManger.service.UserService' that could not be found.
    创建springboot项目时出现Selected Java version 11 is not supported by SDK (maximum 8)
  • 原文地址:https://www.cnblogs.com/gllegolas/p/12453031.html
Copyright © 2020-2023  润新知