当前位置:编程学习 > JAVA >>

有谁做过这样的一个功能?

比如我用系统平台添加一条数据保存到数据库。这个保存到数据库的过程中会产生一个相应的对象也就是pojo
那么我现在得到了这个pojo里面有很多数据。一个字段对应一个嘛!现在我想把这个pojo里面的所有值(除了null和空)想把他变成一个文本形式的。看下面的例子
这个是我平台要输入的内容
   标题: 标题1        
   时间:2013年9月3日    
    游玩地点:北京   
   人物:张山,李四   
   内容:一起去爬山
现在我想通过一个方法想把这几个输入的内容变成一句话:
      标题1,2013年9月3日,北京,张山,李四,一起去爬山。
我现在不想一个一个的get然后拼接这样感觉一个量大而且很耗时间。
有没有哪位大神弄做求方法。谢谢了。
java方法 功能 --------------------编程问答-------------------- 我能想到的就是重写toString,然后传入这个对象,把这个对象的toString写到文件中 --------------------编程问答-------------------- 1楼的想法可以, 在pojo里面重写toString --------------------编程问答-------------------- pojo里面建一个构造方法
A(Date d,Address add){
    this.d = d;
    this.add = add;
}
然后A a = new(d,add); --------------------编程问答--------------------
引用 1 楼 coolboyyzy 的回复:
我能想到的就是重写toString,然后传入这个对象,把这个对象的toString写到文件中

如何重写Tostring方法?可否详细说下? --------------------编程问答--------------------
引用 2 楼 jimmy609 的回复:
1楼的想法可以, 在pojo里面重写toString

如何重写啊? --------------------编程问答--------------------
引用 3 楼 cbxjj 的回复:
pojo里面建一个构造方法
A(Date d,Address add){
    this.d = d;
    this.add = add;
}
然后A a = new(d,add);

看错了 当我没说 --------------------编程问答--------------------
引用 3 楼 cbxjj 的回复:
pojo里面建一个构造方法
A(Date d,Address add){
    this.d = d;
    this.add = add;
}
然后A a = new(d,add);

看不懂啊?接下来怎么弄? --------------------编程问答--------------------
引用 6 楼 cbxjj 的回复:
Quote: 引用 3 楼 cbxjj 的回复:

pojo里面建一个构造方法
A(Date d,Address add){
    this.d = d;
    this.add = add;
}
然后A a = new(d,add);

看错了 当我没说

嗯 没事。 --------------------编程问答--------------------
引用 7 楼 cs123456789dn 的回复:
Quote: 引用 3 楼 cbxjj 的回复:

pojo里面建一个构造方法
A(Date d,Address add){
    this.d = d;
    this.add = add;
}
然后A a = new(d,add);

看不懂啊?接下来怎么弄?


给你pojo的类里面追加
public String toString() {
return("你想要的pojo的属性就可以了");
}
估计这样可以实现 --------------------编程问答-------------------- fastjson 就这个功能  自己去看 --------------------编程问答-------------------- 后面调用的时候直接(对象.ToString) ,可以参考一下Integerdeng的toString方法  --------------------编程问答-------------------- 重写toString()是可以的。。。。 --------------------编程问答-------------------- 这么简单的问题都搞不定?
public String toString(Object o)
{
    String msg = o.getXXX()+ "," + o.getXXX() + "," + o.getXXX();
    return msg; 
} --------------------编程问答-------------------- 通俗一点
一个pojo对应一个class没问题吧?
假如它是
class o{
time;
address;
person;
content;
***//其他内容
}
那么在它中间加个方法toString();变成
class o{
time;
address;
person;
content;
***//其他内容
toString(){
 return this.time+","+this.address+","+this.person+","+this.content
}
}

到时候pojo出来了,比如名字叫o1,那么o1.toString();就能得到想要的字符串
--------------------编程问答-------------------- 说到底,你还是要一个一个get的。你把这些get封装起来就成一个toString了。 --------------------编程问答--------------------
引用 10 楼 u011056791 的回复:
fastjson 就这个功能  自己去看

大哥别这样啊!帮人帮到底啊! --------------------编程问答-------------------- 。。。反射啊



@Override
public String toString() {
StringBuffer sbuff = new StringBuffer();

sbuff.append("{");

Field[] fields = this.getClass().getDeclaredFields();
try {
for (Field field : fields) {
sbuff.append("\"" + field.getName() + "\":\"" + field.get(this) + "\",");
}
sbuff.deleteCharAt(sbuff.length() - 1);
} catch (Exception e) {
}
sbuff.append("}");

return sbuff.toString();
}

--------------------编程问答-------------------- 我一个表50多个字段,一个个get那要疯掉 --------------------编程问答-------------------- 重写一个get方法被,把所有属性拼成一个字符串不就行了? --------------------编程问答--------------------
引用 19 楼 caochuankui 的回复:
重写一个get方法被,把所有属性拼成一个字符串不就行了?


要是有一百个字段怎么办 --------------------编程问答--------------------
引用 17 楼 x19881216 的回复:
。。。反射啊



@Override
public String toString() {
StringBuffer sbuff = new StringBuffer();

sbuff.append("{");

Field[] fields = this.getClass().getDeclaredFields();
try {
for (Field field : fields) {
sbuff.append("\"" + field.getName() + "\":\"" + field.get(this) + "\",");
}
sbuff.deleteCharAt(sbuff.length() - 1);
} catch (Exception e) {
}
sbuff.append("}");

return sbuff.toString();
}



field.get(this) 得到对应的属性是不是只能是pulic权限的啊。如果是private 或者是 protect会报错了啊! --------------------编程问答--------------------
引用 21 楼 cs123456789dn 的回复:
Quote: 引用 17 楼 x19881216 的回复:

。。。反射啊



@Override
public String toString() {
StringBuffer sbuff = new StringBuffer();

sbuff.append("{");

Field[] fields = this.getClass().getDeclaredFields();
try {
for (Field field : fields) {
sbuff.append("\"" + field.getName() + "\":\"" + field.get(this) + "\",");
}
sbuff.deleteCharAt(sbuff.length() - 1);
} catch (Exception e) {
}
sbuff.append("}");

return sbuff.toString();
}



field.get(this) 得到对应的属性是不是只能是pulic权限的啊。如果是private 或者是 protect会报错了啊!




用field.setAccessible(true)可以不进行安全检查,不过不写我实际使用中也没发现问题 --------------------编程问答-------------------- 如果楼主熟悉json的话就换种思路。利用json-lib
JSONObject.fromObject(你的pojo).toString();这样就能把你pojo中的所有属性名与属性值转化成
key:value的形式了。而且你还可以使用JSONObject的JsonConfig进行过滤属性和更换属性名称属性值等等 --------------------编程问答--------------------
引用 23 楼 suciver 的回复:
如果楼主熟悉json的话就换种思路。利用json-lib
JSONObject.fromObject(你的pojo).toString();这样就能把你pojo中的所有属性名与属性值转化成
key:value的形式了。而且你还可以使用JSONObject的JsonConfig进行过滤属性和更换属性名称属性值等等


其实我用反射转出来的那个就是个标准的json对象 --------------------编程问答--------------------
引用 24 楼 x19881216 的回复:
Quote: 引用 23 楼 suciver 的回复:

如果楼主熟悉json的话就换种思路。利用json-lib
JSONObject.fromObject(你的pojo).toString();这样就能把你pojo中的所有属性名与属性值转化成
key:value的形式了。而且你还可以使用JSONObject的JsonConfig进行过滤属性和更换属性名称属性值等等


其实我用反射转出来的那个就是个标准的json对象

用反射当然可以,json-lib的原理是用反射。只是自己写代码太多了而且就为了这个一个地方的运用你把toString方式重写了返回你要的属性,如果其他地方要的不是这些属性呢,岂不是自己还要再去写代码。我建议楼主使用json-lib就是因为他可以根据JsonConfig进行自己需求变化的增改或变化属性大大的减少代码量和提高灵活度 --------------------编程问答--------------------
引用 25 楼 suciver 的回复:
Quote: 引用 24 楼 x19881216 的回复:

Quote: 引用 23 楼 suciver 的回复:

如果楼主熟悉json的话就换种思路。利用json-lib
JSONObject.fromObject(你的pojo).toString();这样就能把你pojo中的所有属性名与属性值转化成
key:value的形式了。而且你还可以使用JSONObject的JsonConfig进行过滤属性和更换属性名称属性值等等


其实我用反射转出来的那个就是个标准的json对象

用反射当然可以,json-lib的原理是用反射。只是自己写代码太多了而且就为了这个一个地方的运用你把toString方式重写了返回你要的属性,如果其他地方要的不是这些属性呢,岂不是自己还要再去写代码。我建议楼主使用json-lib就是因为他可以根据JsonConfig进行自己需求变化的增改或变化属性大大的减少代码量和提高灵活度



现成工具固然方便,但需求稍微改改就不能适应了,而且lz要求的也不是json格式的数据,而且他这个自己写段代码也不复杂,授人以鱼不如授人以渔。
--------------------编程问答-------------------- 你写个方法把查询出来的结果集遍历一遍添加到一个string 里面去不可以吗。 --------------------编程问答-------------------- 我错了。。。 --------------------编程问答-------------------- 不懂java,但是我有个思路:getValueFromKey.一个for循环,从对象中依次取出键所对应的值,然后进行字符串拼接,不知道java行不。 --------------------编程问答-------------------- 你用的是eclipse或者myeclipse吧。来跟我做
1.alt+shift+s
2.选择Generate toString() // 倒数第4行
3.默认情况下勾选了fields,即表示所有字段,你也可以任意勾选。
4.ok
你看看tostring方法。
如果你不想要 ", name=" 这些东西?使用正则替换
, \w+=  替换为 ,

ok? --------------------编程问答--------------------
引用 23 楼 suciver 的回复:
如果楼主熟悉json的话就换种思路。利用json-lib
JSONObject.fromObject(你的pojo).toString();这样就能把你pojo中的所有属性名与属性值转化成
key:value的形式了。而且你还可以使用JSONObject的JsonConfig进行过滤属性和更换属性名称属性值等等

恩 这个我有时间可以试下。json我明白 --------------------编程问答-------------------- 利用反射实现,而且代码量也不多。 --------------------编程问答-------------------- 我也不会啊,学习了,真是好 --------------------编程问答--------------------
引用 20 楼 x19881216 的回复:
Quote: 引用 19 楼 caochuankui 的回复:

重写一个get方法被,把所有属性拼成一个字符串不就行了?


要是有一百个字段怎么办

那能怎么办,既然不往数据库里存储,那就只能放到内存中咯,不知道你什么意思 --------------------编程问答-------------------- 小绵羊,反射啊 --------------------编程问答--------------------
引用 2 楼 jimmy609 的回复:
1楼的想法可以, 在pojo里面重写toString


我也同意这个方法 --------------------编程问答-------------------- 手机版的真蛋疼,不能引用回复,15楼正解 --------------------编程问答--------------------
引用 34 楼 caochuankui 的回复:
Quote: 引用 20 楼 x19881216 的回复:

Quote: 引用 19 楼 caochuankui 的回复:

重写一个get方法被,把所有属性拼成一个字符串不就行了?


要是有一百个字段怎么办

那能怎么办,既然不往数据库里存储,那就只能放到内存中咯,不知道你什么意思


我指的是你说的拼接属性的方法,lz自己也说了,一个个拼接很麻烦,所以我才说一百多个字段怎么办。



--------------------编程问答-------------------- jsonObject.fromObject()
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,