简单直接的方法解析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 939697374@qq.com
 * @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":"123!@qq.com","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);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值