我有一个像这样的 API 端点方法:
@ApiMethod(name = "test")
public TestModel test(@Named("testArray") ArrayList<String> myTest) {
for (String i:myTest){
log.warning("i=="+i);
}
请求如下:
{
"testArray":[
"ID1",
"ID2"
]
}
但是,当我检查我的日志(以及这在我的应用程序中引起的问题)时,我看到
i=="ID1,ID2"
不是我期望看到的:
i=="ID1"
i=="ID2"
作为输出。它将数组的两个元素放入 myTest(0) 中。 如何正确填充数组?
最佳答案
在最新的 SDK 1.9.22 上似乎不会出现此问题。
我想知道您如何创建请求,以及您是否可能只是用逗号将字符串连接为发送的数组中的单个元素。虽然我知道故意这样做听起来很疯狂,而且我不认为您正在这样做,但您的代码下面的某个抽象层可能会这样做吗?
另一种可能性是,您没有为 Endpoints API 使用生成的客户端库(您确实应该这样做,它会完成很多工作,您最终需要自己复制),并且您正在形成原始 JSON发送过来?在这种情况下,我可以看到最终发送的请求可能与您期望的不同,从而将“testArray”作为关键的数组内的所有值折叠到逗号分隔的列表中。
因此,我最好的建议是检查您如何提出请求,如果可能的话,get access to the raw request itself在端点方法中查看发送的内容。
关于java - 如何通过 Google Cloud Endpoints 接收 <ArrayList>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30976541/