我正在使用 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];
}
正如您可能从评论中看出的那样,我使用了多种方法来完成此操作,其中返回了 List、Object 和 String[]。我将这部分的列表转换为对象。
如果我返回一个纯字符串,它会被编码并发送。我无法让 List 发回 JSON 数组
最佳答案
我也有类似的问题。如果我理解正确的话, jackson 需要一个类来序列化,并且在提交列表时遇到了麻烦。所以我通过为列表创建一个类来解决这个问题,基本上包装它:
public class MyObject {
//object details with setters and getters
}
然后是包含这些列表的第二个类:
public class MyObjectList {
private List<MyObject> myObjectList;
//and appropriate setter and getter
}
然后我的 URL 调用是:
@GET
public MyObjectList getMyObject() {
//method defined
}
希望有帮助!如果有更好的方法,我会很想亲自看看!
关于java - 返回 String[] 或 List<String> 的 ReSTLet 调用使用 Jackson 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20482912/