我收到此错误:
com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token↵ at [Source: N/A; line: -1, column: -1] (through reference chain: com.test.web.TestFM["fields"])
我模拟了我的情况的简化版本,并抛出了相同的错误:
云端点:
@Api(name = "testApi", version = "v1", clientIds={Constants.WEB_CLIENT_ID, com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID})
public class TestEndpoint {
public void Test(TestFM test){
// nothing necessary here to recreate
}
}
TestFM:
public class TestFM {
public int id;
public List<SubTestFM> fields;
}
SubTestFM:
public class SubTestFM {
public String property1;
public String property2;
}
Javascript:
gapi.client.testApi.testEndpoint.test({
id:7,
fields:[
{ property1: 'test', property2: 'test2' },
{ property1: 'test3', property2: 'test4' }
]
}).execute(function(resp){console.log(resp);});
我一直以为这可能是端点的限制,直到我意识到通过API资源管理器提交相同的数据时,一切都会按预期运行。
API资源管理器成功生成的请求:
POST http://localhost:8888/_ah/api/testApi/v1/Test
Content-Type: application/json
X-JavaScript-User-Agent: Google APIs Explorer
{
"id": 7,
"fields": [
{
"property1": "test",
"property2": "test2"
},
{
"property1": "test3",
"property2": "test4"
}
]
}
任何帮助是极大的赞赏!
最佳答案
读完我的问题后,我意识到Google Cloud Endpoints所涉及的一个库保留或以其他方式使用了字段名“ fields”。
从“字段”更改名称(在上面的TestFM中)已解决了上面的测试代码和我自己的代码中的错误。
关于java - 当在列表中映射POJO时,为什么Cloud Endpoints抛出com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26196562/