2016-01-05 57 views
2

我试图JSON数据发送到我的JAVA类,但得到一个错误JSON映射例外

“无法执行POST IntakeFormSections/POSTDATA:org.jboss.resteasy.spi.ReaderException:org.codehaus.jackson.map .JsonMappingException:无法反序列化org.json.JSONObject的情况下进行START_ARRAY令牌”

控制器:

var datanew = angular.toJson($scope.data); 
$http({ 

url :"http://localhost:8080/......IntakeFormSections/PostData", 

     method: 'POST', 
     data : datanew, 
     headers: {'Content-Type': 'application/Json'}, 

     })}; 

Java代码:

@POST 
@Path("/PostData") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 

public String UpdateSiteVisitInfo(JSONObject data) throws JSONException { 
System.out.println("++++++++++"); 
System.out.println(data); 
return null;} 
+0

请求时datanew的内容是什么? –

+2

'out of START_ARRAY token''''''''' datanew''''''''''''''''''''''''requested as'JSONObject' in your method signature。 – PeterMmm

+0

内容datanew的是这样的JSON: - “问题”:[{ \t \t \t “ID”:1, \t \t \t “说明”: “发布者联系信息”, \t \t \t “类型”: “潜伏” , \t \t \t “需要”: “假”, \t \t \t “subquestions1”:[{ \t \t \t \t \t “ID”: “一”, \t \t \t \t \t “说明”: “ID”, \t \t \t \t \t “类型”: “文本”, \t \t \t \t \t “名称”: “ID”, \t \t \t \t \t“patternType “: ”字母数字“, \t \t \t \t \t ”需要“:” 假” \t \t \t \t},{ \t \t \t \t \t “ID”: “B”, \t \t \t \t \t “描述”: “姓名”, \t \t \t \t \t “类型”: “文本”, \t \t \t \t \t “名”: “用户”, \t \t \t \t \t “patternType”: “文本”, \t \t \t \t \t “需要”: “假”, \t \t \t \t \t “长度”:100 \t \t \t \t}] – user3449214

回答

0

JSON格式错误。

它应该是这样的。

[{ "Id": 1, "description": "Submitter Contact Information", "type": "hidden", "required": "false", "subquestions1": [{ "Id": "a", "description": "ID", "type": "text", "name": "id", "patternType": "alphanumeric", "required":"false" }, { "Id": "b", "description": "Name", "type": "text", "name": "user", "patternType": "text", "required":"false", "length":100 }]}] 
0

你传入一个JSONObjects作为datanew的名单,但在控制它映射到单一的JSONObject,请更换控制器的参数类型接受一个JSONObjects的名单。

0

正如你指出的,你发送的数组有一个JSONObject元素。这意味着你应该有一个JSONObject []数组的参数,然后检索第一个元素或将单个对象发送到端点。