天天看點

簡單直接的方法解析JSON資料

這個方式是給不想用或者不會用JSON解析工具的人做參考,代碼不算好,有意見的可以提,一起交流。

//前端傳進來的Json資料如下:
//"name-inputEl":"21","email-inputEl":"","phone-inputEl":"21","sex":"1","birthday-inputEl":"2017-01-05","hobby":["1","2"]


利用字元串截取的方法分别獲每一個需要的資料。

package july.star.map.sys.service;
import java.util.HashMap;
import july.star.map.sys.dao.UserDao;
import july.star.map.sys.model.User;
/**
 * 使用者業務層
 *
 * @author MoXingJian
 * @email [email protected]
 * @date 2017年1月5日 下午2:31:32
 * @version 1.0
 */
public class UserService {
    User user = new User();
    UserDao userDao = new UserDao();
    /** 兩個方法的差別是對json資料中的hobby是否有多選進行不同的操作,
     * 多選是有[ ],例如:"hobby":["1","2"]
     * 單選就是沒有,例如:"hobby":"1",
     * 以下是對不同的方法進行操作
     *  */
    // 解析Json
    public void analyzeJson(String formJson) {
        // "name-inputEl":"21","email-inputEl":"","phone-inputEl":"21","sex":"1","birthday-inputEl":"2017-01-05","hobby":["1","2"]
        String substring = formJson.substring(1, formJson.length() - 1);
        String s1 = substring.substring(0, substring.lastIndexOf(",\"hobby"));
        System.out.println(s1);
        String[] split1 = s1.split(",");
        for (String string : split1) {
            if (string.contains("name")) {
                String name = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                user.setUserName(name);
                // System.out.println(name);
            }
            if (string.contains("email")) {
                String email = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                user.setEmail(email);
                // System.out.println(email);
            }
            if (string.contains("phone")) {
                String phone = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                user.setPhoneNumber(phone);
                // System.out.println(phone);
            }
            if (string.contains("sex")) {
                String sex = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                Integer s = Integer.valueOf(sex);
                user.setSex(s);
                // System.out.println(s);
            }
            if (string.contains("birthday")) {
                String birthday = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                user.setBirthday(birthday);
                // System.out.println(birthday);
            }
        }
        String hobby = substring.substring(substring.lastIndexOf("hobby"));
        // "1","2","3","4"
        // 如果隻有一個那就會出錯
        String str = hobby.substring(hobby.lastIndexOf("[") + 1, hobby.lastIndexOf("]"));
        String[] split = str.split(",");
        HashMap map = new HashMap();
        for (String s : split) {
            if (s.contains("1")) {
                map.put("1", "運動");
            }
            if (s.contains("2")) {
                map.put("2", "聽音樂");
            }
            if (s.contains("3")) {
                map.put("3", "睡覺");
            }
            if (s.contains("4")) {
                map.put("4", "其他");
            }
        }
        user.setHobby(map);
        // 儲存資料到資料庫
        userDao.saveUser(user);
        // 周遊輸出資料
        /*
         * Iterator iterator = map.entrySet().iterator();
         * while(iterator.hasNext()){ Map.Entry entry =
         * (Map.Entry)iterator.next(); System.out.print(entry.getKey());
         * System.out.println(entry.getValue()); }
         */
    }
    // 簡單的分析資料
    public void anotherAnalyzeJson(String formJson) {
        //{"name-inputEl":"23","email-inputEl":"[email protected]","phone-inputEl":"32","sex":"1","birthday-inputEl":"2017-01-05","hobby":"1"}
        String substring = formJson.substring(1, formJson.length() - 1);
        System.out.println(substring);
        String[] split1 = substring.split(",");
        for (String string : split1) {
            if (string.contains("name")) {
                String name = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                user.setUserName(name);
                // System.out.println(name);
            }
            if (string.contains("email")) {
                String email = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                user.setEmail(email);
                // System.out.println(email);
            }
            if (string.contains("phone")) {
                String phone = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                user.setPhoneNumber(phone);
                // System.out.println(phone);
            }
            if (string.contains("sex")) {
                String sex = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                Integer s = Integer.valueOf(sex);
                user.setSex(s);
                // System.out.println(s);
            }
            if (string.contains("birthday")) {
                String birthday = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                user.setBirthday(birthday);
                // System.out.println(birthday);
            }
            if (string.contains("hobby")) {
                String hobby = string.substring(string.lastIndexOf(":\"") + 2, string.lastIndexOf("\""));
                HashMap map = new HashMap();
                if (hobby.contains("1")) {
                    map.put("1", "運動");
                }
                if (hobby.contains("2")) {
                    map.put("2", "聽音樂");
                }
                if (hobby.contains("3")) {
                    map.put("3", "睡覺");
                }
                if (hobby.contains("4")) {
                    map.put("4", "其他");
                }
                user.setHobby(map);
            }
        }
        
        // 儲存資料到資料庫
        userDao.saveUser(user);
    }
}