java字符串分割后如何封装为对象

z122787318 2018-04-23 10:29:36
String str = "name=小红,age=18;name=小明,age=16";

定义user类,包含name和age,将字符串分割后如何根据name和age封装为两个user对象
求解答
...全文
880 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vipcxj 2018-04-24
  • 打赏
  • 举报
回复
通常做法ls也已经说了,我来说个奇葩的做法。 1. 所有‘=’替换为‘\":\"’, 即"name=小红,age=18;name=小明,age=16"变为"name\“:\”小红,age\":\"18;name\":\"小明,age\":\"16" 2. 所有‘;’替换为‘\"},{\"’, 即"name\“:\”小红,age\":\"18;name\":\"小明,age\":\"16"变为"name\“:\”小红,age\":\"18\"},{\"name\":\"小明,age\":\"16" 3. 所有‘,’替换为"\",\"",即"name\“:\”小红,age\":\"18\"},{\"name\":\"小明,age\":\"16"变为"name\":\"小红\",\"age\":\"18\"},{\"name\":\"小明\",\"age\":\"16" 3. 字符串用”{\""和"\"}"包裹起来,即"name\":\"小红\",\"age\":\"18\"},{\"name\":\"小明\",\"age\":\"16"变为"{\"name\":\"小红\",\"age\":\"18\"},{\"name\":\"小明\",\"age\":\"16\"}" 于是字符串最终变成一个合法的json格式的数据,市面上随便找个json解析器,反序列化为对象就行了~ 以上只是比较奇葩的方法,其实这个简单的格式,2次split就够了~
QWERT4745 2018-04-24
  • 打赏
  • 举报
回复
利用split,多看下String常用方法

        public static void main(String[] args) {
		String str = "name=小红,age=18;name=小明,age=16";
		if (null != str && str.length() > 0) {
			String[] arr1 = str.split(";");
			for (int i = 0; i < arr1.length; i++) {
				if (null != arr1[i] && arr1[i].length() > 0) {
					String[] arr2 = arr1[i].split(",");
					User user = new User();
					user.setName(arr2[0].substring(arr2[0].indexOf("=") + 1));
					user.setAge(Integer.parseInt(arr2[1].substring(arr2[1].indexOf("=") + 1)));
					System.out.println(user.getName() + "============" + user.getAge());
				}
			}
		}
	}

public class User {
	private String name;
	private int age;

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}
天行归来 2018-04-24
  • 打赏
  • 举报
回复
引用 3 楼 vipcxj 的回复:
通常做法ls也已经说了,我来说个奇葩的做法。 1. 所有‘=’替换为‘\":\"’, 即"name=小红,age=18;name=小明,age=16"变为"name\“:\”小红,age\":\"18;name\":\"小明,age\":\"16" 2. 所有‘;’替换为‘\"},{\"’, 即"name\“:\”小红,age\":\"18;name\":\"小明,age\":\"16"变为"name\“:\”小红,age\":\"18\"},{\"name\":\"小明,age\":\"16" 3. 所有‘,’替换为"\",\"",即"name\“:\”小红,age\":\"18\"},{\"name\":\"小明,age\":\"16"变为"name\":\"小红\",\"age\":\"18\"},{\"name\":\"小明\",\"age\":\"16" 3. 字符串用”{\""和"\"}"包裹起来,即"name\":\"小红\",\"age\":\"18\"},{\"name\":\"小明\",\"age\":\"16"变为"{\"name\":\"小红\",\"age\":\"18\"},{\"name\":\"小明\",\"age\":\"16\"}" 于是字符串最终变成一个合法的json格式的数据,市面上随便找个json解析器,反序列化为对象就行了~ 以上只是比较奇葩的方法,其实这个简单的格式,2次split就够了~
相当有想法,我一个工具类就是这么封装 /**convert json string to object * @param js json string * @param cls bean class name * @return bean object * eg: TestBean bean = (TestBean)JsonTool.jsonToBean(js, TestBean.class); * by @author lms 2016.07.11 */ public static <T>Object jsonToBean(String js, Class<T> cls){ if (StrTool.isBlankStr(js)) return null; try{ JSONObject jsObj= JSONObject.fromObject(js); Object obj = JSONObject.toBean(jsObj,cls); return obj; }catch(Exception e){ e.printStackTrace(); } return null; }
hbhbhbhbhb1021 2018-04-24
  • 打赏
  • 举报
回复

package com.cy.mybatis.service;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Tester {
    public static void main(String[] args) {
        Tester tester=new Tester();
        String str = "name=小红,age=18;name=小明,age=16";
        Pattern r = Pattern.compile("name=([^,]+),age=([^;]+)(;|$)");
        Matcher m = r.matcher(str);
        List<Tester2> result=tester.test(m);
        System.out.print(result);

    }
    public  List<Tester2> test(Matcher m){
        List<Tester2> list =new ArrayList<Tester2>();
       while (m.find()) {
           Tester2 tester2=new Tester2(m.group(1),m.group(2));
           list.add(tester2);
        }
        return list;
    }
    public class Tester2{
        private String name;
        private String age;

        public Tester2(String name, String age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

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

        public String getAge() {
            return age;
        }

        public void setAge(String age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "Tester2{" +
                    "name='" + name + '\'' +
                    ", age='" + age + '\'' +
                    '}';
        }
    }
}

oyljerry 2018-04-23
  • 打赏
  • 举报
回复
只能自己分割,然后生成对象

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧