java中json字串與物件轉換
阿新 • • 發佈:2021-12-21
常見的轉換工具有:
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", "[email protected]", "18999999999")); userList.add(new User(2, "熱巴", "123456", "[email protected]", "19898989898")); userList.add(new User(3, "哈尼", "123456", "[email protected]", "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\":\"[email protected]\",\"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\":\"[email protected]\",\"phone\":\"1386789898\"},{\"id\":2,\"username\":\"ls\",\"password\":\"123456\",\"email\":\"[email protected]\",\"phone\":\"1386781898\"},{\"id\":3,\"username\":\"ww\",\"password\":\"123456\",\"email\":\"[email protected]\",\"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","[email protected]","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\":\"[email protected]\",\"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\":\"[email protected]\",\"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\":\"[email protected]\",\"phone\":\"18999999999\"},{\"id\":2,\"username\":\"李四\",\"password\":\"654321\",\"email\":\"[email protected]\",\"phone\":\"18666666666\"},{\"id\":3,\"username\":\"王五\",\"password\":\"777777\",\"email\":\"[email protected]\",\"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") ;