Java 返回字符串[]或列表的Restlet调用<;字符串>;使用Jackson返回null

Java 返回字符串[]或列表的Restlet调用<;字符串>;使用Jackson返回null,java,json,jackson,restlet,Java,Json,Jackson,Restlet,我正在使用restlet库和Jackson发送JSON数据,我无法获取以下内容来返回列表的JSON对象,我从中获取null,并且没有错误: public class Info extends ServerResource { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { Serve

我正在使用restlet库和Jackson发送JSON数据,我无法获取以下内容来返回列表的JSON对象,我从中获取null,并且没有错误:

public class Info extends ServerResource {

    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        Server server = new Server(Protocol.HTTP,8080,Info.class);
        System.out.println("Starting: " + args[0]);
      server.start();
      System.out.println("Start returned: " + args[1]);
      ObjectMapper mapper = new ObjectMapper();
      List<String> user = new ArrayList<String>();
      user.add("SDFE");
      user.add("XXYY");
      Object o = "user";
      mapper.writeValue(new File("/tmp/user.json"), o);
    }

    /*@Get("json")
    public String isAwake()
    {
        System.out.println("Getting true");
        return "true";
    }*/

    @Get("json")
   //   public List los()
   //public String[] los()
   public String los()
    {   
        ArrayList l = new ArrayList<String>();
      String[] sl = new String[2];

      sl[0] = "FDSSE";
      sl[1] = "ODSEF";

        l.add("ESDF");
        l.add("JJKE");
          //return l;
      return sl.toString();
          // return sl[0];
    }
公共类信息扩展了ServerResource{
/**
*@param args
*@抛出异常
*/
公共静态void main(字符串[]args)引发异常{
服务器=新服务器(Protocol.HTTP,8080,Info.class);
System.out.println(“开始:+args[0]);
server.start();
System.out.println(“开始返回:+args[1]);
ObjectMapper mapper=新的ObjectMapper();
List user=new ArrayList();
用户。添加(“SDFE”);
用户。添加(“XXYY”);
对象o=“用户”;
writeValue(新文件(“/tmp/user.json”),o);
}
/*@获取(“json”)
公共字符串isAwake()
{
System.out.println(“实现”);
返回“真”;
}*/
@获取(“json”)
//公开名单
//公共字符串[]los()
公共字符串los()
{   
ArrayList l=新的ArrayList();
字符串[]sl=新字符串[2];
sl[0]=“FDSSE”;
sl[1]=“ODSEF”;
l、 添加(“ESDF”);
l、 添加(“JJKE”);
//返回l;
返回sl.toString();
//返回sl[0];
}
正如您可能从评论中看到的,我已经通过多种方式完成了这项工作,返回了List、Object和String[],我将列表转换为Object


如果我返回一个普通字符串,它将被编码并发送。我无法让列表发回JSON数组。我也遇到了类似的问题。如果我理解正确,Jackson需要一个类来序列化,并且在提交列表时遇到了问题。因此,我为列表创建了一个类,基本上将其包装起来,从而解决了这个问题:

public class MyObject {
    //object details with setters and getters
}
然后是第二个类,其中包含以下内容的列表:

public class MyObjectList {
    private List<MyObject> myObjectList;
    //and appropriate setter and getter
}

希望能有帮助!如果有更好的方法,我会很好奇自己去看的!

[code]导入java.util.ArrayList;公共类StringList扩展ArrayList{}[code]不要用StringList类扩展ArrayList。在我的MyObjectList类中,你会看到它只是一个类,并不是从任何东西派生出来的。但它有一个对象是列表。
@GET
public MyObjectList getMyObject() {
    //method defined 
}