2016-01-05 80 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 []數組的參數,然後檢索第一個元素或將單個對象發送到端點。