public String toString(){
String json="{rid:%d,topic:'%s'/*String*/,user:'%s'/*String*/title:'%s',content:'%s',replyTime:'%s',userIp:'%s'}";
return String.format(json, rid,topic/*主贴对象*/,user/*用户对象*/,title,content,replyTime.toString(),userIp);
}
// Fields
private long rid;
private Topic topic;//引用类型
private User user;//引用类型
private String title;
private String content;
private Date replyTime;
private String userIp;
topic:'%s' 是String类型的,而topic 是类类型的,如何让他们进行转换,因为可能在其他的类中我需要用到转换后的topic!
希望高手帮我解决这个问题,如果此方法不行,请告诉我其他方法的详细情况!谢谢
以下是以前写的一段代码,就是JSON串与JAVA对象之间互相转换,使用的Jackson-Json,不管嵌套几层都是OK的。
Jackson-json网站:http://jackson.codehaus.org/
import java.io.StringWriter;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.MappingJsonFactory;
import org.codehaus.jackson.type.TypeReference;
[code="java"]/**
@created 2011-03-08 09:40:08
/
public class JsonUtils {
/*
@return object的JSON格式字符串
*/
public static String toJson(Object object) {
// Jackson方式转换为Json
MappingJsonFactory f = new MappingJsonFactory();
StringWriter sw = new StringWriter();
try {
JsonGenerator generator = f.createJsonGenerator(sw);
generator.writeObject(object);
generator.close();
} catch (Exception e) {
return "";
}
return sw.toString();
}
/**
@return Object对象
*/
public static T jsonToObject(String jsonString, Class c){
if (jsonString == null || "".equals(jsonString)) {
return null;
} else {
// Jackson方式将Json转换为对象
MappingJsonFactory f = new MappingJsonFactory();
try {
JsonParser parser = f.createJsonParser(jsonString);
return parser.readValueAs(c);
} catch (Exception e) {
return null;
}
}
}
/**
@return ObjectList对象
*/
public static T jsonToGenericObject(String jsonString, TypeReference tr){
if (jsonString == null || "".equals(jsonString)) {
return null;
} else {
// Jackson方式将Json转换为对象
MappingJsonFactory f = new MappingJsonFactory();
try {
JsonParser parser = f.createJsonParser(jsonString);
return parser.readValueAs(tr);
} catch (Exception e) {
return null;
}
}
}
}[/code]
可以使用专门的java json jar包;现在用的多的有两个;
json.jar与json-lib-1.1-jdk15.jar
json.jar需要手动去put对象,在转换的时候可以做到尽量少的put对象和对对象的格式可以有自己的规则。
json-lib-1.1-jdk15.jar有一套完整的转换机制,可以将一个任意的集合和类对象进行转换,要比上面的少些很多代码。你都可以先下载这些包下来试试。网上也有很多例子。
没有放代码的习惯,不过提示你看看google的gson,gson提供了对象、list到json的序列化与json到对象的逆序列化,以及深层次的序列化和转化过程中剔除不需要的对象等功能。