您的位置:首页 > 其它

Jackson使用(三)

2016-01-12 16:12 232 查看
 package com.manager.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Test2 {
 /**
  * @param args
  * @author julong 2015-6-1 ????03:37:27
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  List<UserInfo> userInfoList = new ArrayList<UserInfo>();
  UserInfo userInfo = new UserInfo();
  userInfo.setUserName("小明");
  userInfo.setUserAge(18);
  userInfo.setUserSex("男");
  userInfo.setUserPassword("000000");
  UserInfo userInfo1 = new UserInfo();
  userInfo1.setUserName("小红");
  userInfo1.setUserAge(18);
  userInfo1.setUserSex("女");
  userInfo1.setUserPassword("000000");
  UserInfo userInfo2 = new UserInfo();
  userInfo2.setUserName("小强");
  userInfo2.setUserAge(20);
  userInfo2.setUserSex("男");
  userInfo2.setUserPassword("000000");
  userInfoList.add(userInfo);
  userInfoList.add(userInfo1);
  userInfoList.add(userInfo2);
  ObjectMapper objectMapper = new ObjectMapper();
  try {
   File file = new File("user.json");
   FileOutputStream fileOutputStream = new FileOutputStream(file);
   OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "utf-8");
   objectMapper.writeValue(outputStreamWriter, userInfoList);
   System.out.println("创建成功");
   //有人可能给很疑问 为什么要转为UTF-8的编码格式 因为一般我们的环境都是GBK编码格式,在json中如果不做项目的转码 为UTF-8或者生成的json的转为UTF-8
   //你会惊奇的发现出来的文件为乱码中文的,可读性就太差了,不过你不转也没有关系的,因为在java中你以同样的编码格式读取出来效果还是一样的 不会乱码,
   //个人感觉就是不舒服,看起来感觉就是个错的乱码,所以建议还是使用UTF-8编码。
   //转集合
   List list = objectMapper.readValue(new File("user.json"), List.class);
   for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
    //强转为java对象
    UserInfo userInfo6 = objectMapper.convertValue(list.get(i), UserInfo.class);
    System.out.println(userInfo6.getUserName());
   }
   
  } catch (JsonGenerationException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (JsonMappingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

package com.manager.util;
public class UserInfo {
 private String userName;
 private int userAge;
 private String userSex;
 private String userPassword;
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public int getUserAge() {
  return userAge;
 }
 public void setUserAge(int userAge) {
  this.userAge = userAge;
 }
 public String getUserSex() {
  return userSex;
 }
 public void setUserSex(String userSex) {
  this.userSex = userSex;
 }
 public String getUserPassword() {
  return userPassword;
 }
 public void setUserPassword(String userPassword) {
  this.userPassword = userPassword;
 }
 
}


下面看下运行的结果

创建成功
{userName=小明, userAge=18, userSex=男, userPassword=000000}
小明
{userName=小红, userAge=18, userSex=女, userPassword=000000}
小红
{userName=小强, userAge=20, userSex=男, userPassword=000000}
小强
乱码的user.json与不乱码的user.json
[{"userName":"灏忔槑","userAge":18,"userSex":"鐢?,"userPassword":"000000"},{"userName":"灏忕孩","userAge":18,"userSex":"濂?,"userPassword":"000000"},{"userName":"灏忓己","userAge":20,"userSex":"鐢?,"userPassword":"000000"}] 
[{"userName":"小明","userAge":18,"userSex":"男","userPassword":"000000"},{"userName":"小红","userAge":18,"userSex":"女","userPassword":"000000"},{"userName":"小强","userAge":20,"userSex":"男","userPassword":"000000"}] 那个看着舒服我相信明眼人一眼就看出啦啦啦!
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Jackson