Java 返回字符串[]或列表的Restlet调用<;字符串>;使用Jackson返回null
我正在使用restlet库和Jackson发送JSON数据,我无法获取以下内容来返回列表的JSON对象,我从中获取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
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
}