json 中对象的转换

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"]/**

  • JSON转换处理工具类
  • @created 2011-03-08 09:40:08
    /
    public class JsonUtils {
    /
    *

    • Object对象转换为JSON格式
    • 例如List对象、JavaBean对象、JavaBean对象数组、Map对象、List Map对象
    • @param object 传入的Object对象
    • @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();

    }

    /**

    • JSON转换为Object对象
    • @param jsonString JSON字符串
    • @param c 要转换成的类的类型
    • @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;
      }
      

      }
      }

    /**

    • 数组格式JSON串转换为ObjectList对象
    • @param
    • @param jsonString JSON字符串
    • @param tr TypeReference,例如: new TypeReference< List >(){}
    • @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到对象的逆序列化,以及深层次的序列化和转化过程中剔除不需要的对象等功能。