java - 返回 String[] 或 List<String> 的 ReSTLet 调用使用 Jackson 返回 null

标签 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 {
        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/

相关文章:

java - 用于在 FLEX 中显示 (>25 MB) 文本文件的组件

json - 为 appsettings.json 引用单独的连接字符串文件?

json - 无法在 Grails 2.1 中的 ExtJS 网格 (4.2.1) 中填充 JSON 数据

java - 如果 RequestBody 中存在任何未知字段,则需要拒绝 POST/PUT 请求

java - 从 HttpServletRequest 获取 POST 请求正文

java - 使用 Appium 删除用于 IPAD 和 IPHONE 真实设备的移动 Safari 浏览器 Cookie

java - 无法反序列化 - Jackson LocalDate/Time - JUnit

java - 如何读取通用列表中的 JSON

java - 来自 APK 的源代码

ruby-on-rails - Rails 3 - 使用json上传图片