2016-02-26 15 views
0

我想從angularJS應用程序中使用我的play-framework應用程序()獲取json字符串。獲取json在play-framwork

這是我實際發送:

{"in":[ 
     {"id":4,"ip":"192.168.0.20","pinSysNo":4,"pinSysName":"pg6","folderName":"gpio4_pg6","alias":"d","direction":"digital_in"}, 
     {"id":3,"ip":"192.168.0.20","pinSysNo":3,"pinSysName":"pb18","folderName":"gpio3_pb18","alias":"c","direction":"digital_out"} 
     ], 
"out":[ 
     {"id":1,"ip":"192.168.0.20","pinSysNo":1,"pinSysName":"pg3","folderName":"gpio1_pg3","alias":"a","direction":"digital_in"}, 
     {"id":2,"ip":"192.168.0.20","pinSysNo":2,"pinSysName":"pb16","folderName":"gpio2_pb16","alias":"b","direction":"digital_in"} 
      ] 
}:"" 

我總是得到狀態代碼500(內部服務器錯誤)。 可能有些在我的路線不正確? 路線:

POST  /networkInsertJson   controllers.NetworkController.InsertJson() 

可能會做我有從JSON字符串的最後3個字符的問題嗎?

這是我的控制器:

public static Result InsertJson(){ 
    ObjectNode result = Json.newObject(); 
    JsonNode json = request().body().asJson(); 
    org.json.simple.parser.JSONParser parser = new JSONParser(); 
    JSONObject o = new JSONObject(); 
    try{ 
     o = (JSONObject) parser.parse(json.asText()); 
    }catch (Exception e){ 

    } 

    JSONArray ins = (JSONArray) o.get("in"); 
    JSONArray outs = (JSONArray) o.get("out"); 

    //I return the json back for testing 
    result.put("in", ins.toJSONString()); 
    return ok(result); 
} 

你能幫我找到錯誤了嗎?

+0

這不是json,它是附帶某種後綴的json,你應該修復源發送適當的json – Ferrybig

+0

現在我有Json。我將角度控制器中的內容類型更改爲「application/json」。但狀態碼500仍然存在。 –

+0

我認爲@Ferrybig正在談論JSON負載中的尾隨':「」'。嘗試解析該遊戲會出錯。您是否有來自應用程序日誌或500響應的更具體的錯誤? – lyjackal

回答

1

我發現在這些行我自己的錯誤:

result.put("in", ins.toJSONString()); 

我試圖插入數組作爲JSON元素的內容。