java中json字符串與對象轉換


常見的轉換工具有:
Jackson:SpringMVC內置的轉換工具
jsonlib:Java提供的轉換工具(一般不用)
gson:google提供的轉換工具(輕量級的框架)
fastjson:Alibaba提供的轉換工具(效率高速度快)

Jackson:
相關jar包:

jackson-annotations-2.2.3.jar
jackson-core.2.2.3.jar
jackson-databind-2.2.3.jar

主要方法:

//對象----->字符串
String jsonStr = new ObjectMapper().**writeValueAsString**(resultBean);	
//字符串--->map
Map map = JSON.**parseObject**(jsonStr, Map.class);	                
//字符串---> list
TypeReference<List<User>> ref = new TypeReference<List<User>>(){};
List<User> list = objectMapper.readValue(jsonStr, ref);                 

java對象轉json:


//Map對象或者JavaBean對象轉換成json的時候會得到一個json字符串
//List<Map>或者List<JavaBean>轉換成json的時候會得到一個json數組的字符串
 @Test
    public void test04() throws JsonProcessingException {
        List<User> userList = new ArrayList<>();
        userList.add(new User(1, "娜扎", "123456", "18999999999@163.com", "18999999999"));
        userList.add(new User(2, "熱巴", "123456", "18999999999@163.com", "19898989898"));
        userList.add(new User(3, "哈尼", "123456", "18999999999@163.com", "19866666666"));
        ResultBean resultBean = new ResultBean(true, userList);
        String jsonStr = new ObjectMapper().writeValueAsString(resultBean);
        System.out.println(jsonStr);
    }

json字符串轉對象:
使用jackson將json字符串轉換JavaBean對象或者Map

@Test
//把json轉成JavaBean(user對象)
public void test06() throws IOException {
    String jsonStr = "{\"id\":1,\"username\":\"zs\",\"password\":\"123456\",\"email\":\"zs@163.com\",\"phone\":\"1386789898\"}";
    //1.調用JSON.parseObject(String json,Class clazz);
    //轉換成user
    User user = JSON.parseObject(jsonStr, User.class);
    System.out.println(user);
    
    //轉換成map
    Map map = JSON.parseObject(jsonStr, Map.class);
    System.out.println(map);
}

使用jackson將json數組字符串轉換成List

@Test
//把json轉成List<JavaBean>對象
public void test07() throws Exception {
    String jsonStr = "[{\"id\":1,\"username\":\"zs\",\"password\":\"123456\",\"email\":\"zs@163.com\",\"phone\":\"1386789898\"},{\"id\":2,\"username\":\"ls\",\"password\":\"123456\",\"email\":\"ls@163.com\",\"phone\":\"1386781898\"},{\"id\":3,\"username\":\"ww\",\"password\":\"123456\",\"email\":\"ww@163.com\",\"phone\":\"1386782898\"}]";
	
    //1.創建ObjectMapper對象
    ObjectMapper objectMapper = new ObjectMapper();

    //2.調用readValue()
    TypeReference<List<User>> ref = new TypeReference<List<User>>(){};
    List<User> list = objectMapper.readValue(jsonStr, ref);
    System.out.println(list);
}

fastjson
jar包:fastjson-1.2.39.jar
主要方法:

String jsonStr = JSON.toJSONString(user)  		     //user(對象) -----> jsonStr(字符串)
Map map = JSON.parseObject(jsonStr, Map.class);   	     //jsonStr(字符串) --> map
List<User> userList = JSON.parseArray(jsonArr, User.class);  //jsonStr(字符串) --> List

使用fastjson將java對象轉成json字符串

@Test
    public void test06(){
        //使用fastjson將user對象轉換成json字符串
        User user = new User(1,"張三","123456","123456@qq.com","18999999999");
        String jsonStr = JSON.toJSONString(user);
        System.out.println(jsonStr);
    }

使用fastjson將json字符串轉換成JavaBean對象或者Map

@Test
    //把json轉成JavaBean(user對象)
    public void test08() throws IOException {
        String jsonStr = "{\"id\":1,\"username\":\"zs\",\"password\":\"123456\",\"email\":\"zs@163.com\",\"phone\":\"1386789898\"}";

	//1.調用JSON.parseObject(String json,Class clazz);
        User user = JSON.parseObject(jsonStr, User.class);
        System.out.println(user);

    }
@Test
 //把json轉成Map
 public void test09() throws IOException {
     String jsonStr = "{\"id\":1,\"username\":\"zs\",\"password\":\"123456\",\"email\":\"zs@163.com\",\"phone\":\"1386789898\"}";
     //1.調用JSON.parseObject(String json,Class clazz);
     Map map = JSON.parseObject(jsonStr, Map.class);
     System.out.println(map);
 }
@Test
    //使用fastjson將json字符串轉換成List<JavaBean>
    public void test11() {
        //使用fastjson將json數組的字符串,轉換成List<User>
        String jsonArr = "[{\"id\":1,\"username\":\"張三\",\"password\":\"123456\",\"email\":\"123456@qq.com\",\"phone\":\"18999999999\"},{\"id\":2,\"username\":\"李四\",\"password\":\"654321\",\"email\":\"654321@qq.com\",\"phone\":\"18666666666\"},{\"id\":3,\"username\":\"王五\",\"password\":\"777777\",\"email\":\"777777@qq.com\",\"phone\":\"18777777777\"}]";
        List<User> userList = JSON.parseArray(jsonArr, User.class);
        for (User user : userList) {
            System.out.println(user.getUsername());
        }
    }

fastjson解析復雜json數據:
1、如何從字符串String獲得JSONObject對象和JSONArray對象

JSONObject  jsonObject  = new JSONObject ( String  str);
JSONArray jsonArray = new JSONArray(String    str  ) ;

2、如何從JSONArray中獲得JSONObject對象
可以把JSONArray當成一般的數組來對待,只是獲取的數據內數據的方法不一樣
JSONObject jsonObject = jsonArray.getJSONObject(i) ;

3、獲取JSON內的數據

int   mid= jsonObject.getInt ( "id" ) ;    
String  mcourse=jsonObject.getString( " courseID") ;   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM