[Json] Java中Json相关操作

本文中使用到的Json Jar : fastjson-1.1.40.jar

首先是两个JavaBean

  • User.java
  • Person.java (里面关联了User)

JavaBean代码

public class User {

    private String id;

    private String username;

    private String password;

    public User() {
        super();
    }

    public User(String id, String username, String password) {
        super();
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", password="
                + password + "]";
    }
}
public class Person {

    private String name;

    private User user;

    public Person(String name, User user) {
        super();
        this.name = name;
        this.user = user;
    }

    public Person() {
        super();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", user=" + user + "]";
    }
}

Json 解析

    /**
     * 字符串转Json
     * @param str
     * @return
     */
    public static JSONObject strToJson (String str){
        //String user = "{'id':'1','username':'admin','password':'123456'}";
        JSONObject json = (JSONObject) JSONObject.parse(str);
        String id = (String) json.get("id");
        String username = (String) json.get("username");
        String password = (String) json.get("password");
        return json;
    }

    /**
     * JavaBean转字符串
     * @param object
     * @return
     */
    public static String javaBeanToStr (Object object){
        String json = JSON.toJSONString(object);
        return json;
    }

    /**
     * JavaBean转字符串 - 只显示某些特定字段
     * @return
     */
    public static String javaBeanToStrTwo (Object object){
        //只显示User中的 admin 和 password 字段
        SimplePropertyPreFilter filter = 
                new SimplePropertyPreFilter(User.class, "username","password");  
        String json =JSON.toJSONString(object,filter);  
        return json;
    }

    /**
     * List集合转字符串 - 可只显示特定字符串
     * @param list
     * @return
     */
    public static String listToStr (List list){
        //只显示User中的 admin 和 password 字段
        SimplePropertyPreFilter filter = 
                new SimplePropertyPreFilter(User.class, "username","password");  
        String json =JSON.toJSONString(list,filter);  
        //String json =JSON.toJSONString(list);  
        return json;
    }

    /**
     * List集合转字符串 - JavaBean带子JavaBean
     * @param list
     * @return
     */
    public static String listToStrTwo (List list){
        String json =JSON.toJSONString(list);  
        return json;
    }


    /**
     * 字符串转List集合 - 
     * 字符串格式 : [{...},{...},{...}]
     * @param json
     * @return
     */
    public static List<User> strToList(String json){
        List<User> users =
                JSON.parseObject(json, new TypeReference<List<User>>(){});  
        return users;
    }

    /**
     * 字符串转List集合 - JavaBean带子JavaBean
     * 字符串格式 : [{"":"","JavaBean中的子JavaBean的属性名":{..}}]
     * 例:Person 类中有 User属性,属性名为user
     * 例:[{"name":"李四","user":{"id":"1","password":"password","username":"admin"}}]
     * @return
     */
    public static List<Person> strToListTwo (String json){
        List<Person> persons =
                JSON.parseObject(json, new TypeReference<List<Person>>(){});  
        return persons;
    }

    /**
     * 字符串转Map集合
     * 字符串格式 : {"Map键值":{ JavaBean属性 : 属性值 }}
     * 例:{"张三":{"id":"1","password":"password","username":"admin"}}
     * @param json
     * @return
     */
    public static Map<String, User> strToMap (String json){
        Map<String, User> map= (Map<String, User>) JSON.parse(json); 
        return map;
    }


    /**
     * Map集合转字符串
     * @param map
     * @return
     */
    public static String mapToStr (Map<String, User> map){
        String json = JSON.toJSONString(map);  
        return json;
    }



    /**
     * Json添加Json
     */
    @Test
    public void add (){
        JSONObject json = new JSONObject();
        json.put("username", "admin");
        //{"username":"admin"}
    }

    /**
     * Json添加Json
     */
    @Test
    public void add1 (){
        JSONObject json = new JSONObject();
        User user = new User("1","admin", "password");
        json.put("name", "李四");
        json.put("user", user);
        System.out.println(json);
        //{"name":"李四","user":{"id":"1","password":"password","username":"admin"}}
    }


    /**
     * Json数组添加Json
     * 例 : [{"name":"李四","user":{"id":"1","password":"password","username":"admin"}}]
     */
    @Test
    public void add2 (){
        // 第一步
        JSONObject jsonObject = new JSONObject();
        User user = new User("1","admin", "password");
        jsonObject.put("name", "李四");
        jsonObject.put("user", user);
        // 第二步
        JSONArray json = new JSONArray();
        json.add(0, jsonObject);
        System.out.println(json);
    }

测试代码

        //测试strToJson
        String user = "{'id':'1','username':'admin','password':'123456'}";
        JSONObject strToJson = strToJson(user);

        //测试javaBeanToStr
        User user2 = new User("1","admin", "password");
        String javaBeanToStr = javaBeanToStr(user2);

        //测试javaBeanToStrTwo
        String javaBeanToStrTwo = javaBeanToStrTwo(user2);

        //测试 listToStr
        List<User> list = new ArrayList<User>();
        User user4 = new User("1","admin", "password");
        User user3 = new User("1","admin", "password");
        list.add(user4);
        list.add(user3);
        String listToStr = listToStr(list);

        //测试 strToList
        List<User> strToList = strToList(listToStr);

        //测试 listToStrTwo
        List<Person> persons = new ArrayList<Person>();
        User user5 = new User("1","admin", "password");
        Person person = new Person("李四", user5);
        persons.add(person);
        String listToStrTwo = listToStrTwo(persons);
        //[{"name":"李四","user":{"id":"1","password":"password","username":"admin"}}]

        //测试 strToListTwo
        listToStrTwo = 
                "[{\"name\":\"李四\",\"user\":{\"id\":\"1\",\"password\":\"password\",\"username\":\"admin\"}}]";
        List<Person> strToListTwo = strToListTwo(listToStrTwo);

        //测试 mapToStr
        Map<String, User> map = new HashMap<String, User>();
        map.put("张三", user2);
        String mapToStr = mapToStr(map);
        //{"张三":{"id":"1","password":"password","username":"admin"}}

        //测试 strToMap
        Map<String, User> strToMap = strToMap(mapToStr);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值