从AWS Lambda函数返回缩进的JSON?

时间:2016-12-01 04:33:08

标签: amazon-web-services aws-lambda aws-api-gateway

我在java中设置了lambda函数:

public class Handler implements RequestHandler <Request, List <Response>>
{
    public List <Response> handleRequest (Request request, Context context)
    {                       
        List <Response> userList = new ArrayList <Response>();

        for (int i = 0; i < values.length; i++)
        {
            Response user = new Response();
            user.setUserID (Integer.parseInt (values[i][0]));
            user.setUserTypeName (values[i][1]);
            user.setUserEmail (values[i][2]);
            user.setUserFirstName (values[i][3]);
            user.setUserLastName (values[i][4]);
            user.setUserRole (values[i][5]);
            user.setActiveYN (values[i][6]);
            userList.add (user);
        }
        return userList;
    }
}

AWS API Gateway做了它的事情并且它返回一个虚拟对象数组就好了:

[{"userID":1,"userTypeName":"Adminstrator","userEmail":"joesmiley@gmail.com","userFirstName":"Joe","userLastName":"Smiley","userRole":"n/a","activeYN":"y"},
{"userID":2,"userTypeName":"Manager","userEmail":"sandyjones@gmail.com","userFirstName":"Sandy","userLastName":"Jones","userRole":"n/a","activeYN":"y"},
{"userID":3,"userTypeName":"Manager","userEmail":"jasonsmith@gmail.com","userFirstName":"Jason","userLastName":"Smith","userRole":"n/a","activeYN":"y"},
{"userID":4,"userTypeName":"Manager","userEmail":"neoanderson@gmail.com","userFirstName":"Neo","userLastName":"Anderson","userRole":"n/a","activeYN":"y"}]

问题在于它是一个整洁的坚持者所以这个返回服务需要空白!据我所知,我的java方法只能控制信息而不是表示。这个小调整可能吗?

修改

尝试返回JSONArray;结果相同。

JSONArray indentedReturn = new JSONArray();
indentedReturn.addAll (userList);
return indentedReturn;

1 个答案:

答案 0 :(得分:0)

如果你真的需要缩进,你应该在显示你的JSON之前在客户端上进行缩进,而不是通过网络发送空格和线刹。如果由于某种原因这不是一个选项,您可以将对象格式化为lambda函数内的JSON字符串并返回字符串而不是列表。