0
JSONオブジェクトもJSONオブジェクトを含むWebサービスに送信しています。 Webサービスで取得できません。Jerseyを使用してWebサービスでjsonオブジェクトを取得します。
var courseDetails = '{"UserId": "abc","CourseId": "C1","CourseDetails":{"Id": "_26_1","Name": "Group task test (revised)","Description": "Sample Description"}}';
var obj = JSON.parse(courseDetails);
$http({
method: 'POST',
url: 'rest/DB/Save',
headers: {'Content-Type': 'application/json'},
data : courseDetails,
}).success(function (data){
$scope.status=data;
}).error(function(data, status, headers, config) {
alert("error");
});
を次のように私のクライアント側のコードがあると私のウェブサービスでは、
@POST
@Path("/Save")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.TEXT_PLAIN})
public String autoSave(JSONObject obj) throws Exception{
PersonalisationDao p = new PersonalisationImpl();
System.out.println("Obj "+obj);
String result = "failure";
if(obj != null) {
String userId = (String) obj.get("UserId");
String courseId = (String) obj.get("CourseId");
String courseDetails = (String) obj.get("CourseDetails");
// Problem in fetching course Details
result = p.addDetails(userId, courseId, courseDetails);
}
return result;
}
通常、それはJSONオブジェクトである必要がありますが、その私がで試した
SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.String
を投げますJSONObjectでキャスティングしても、それでも動作しませんでした。助言がありますか?
System.out.println( "Obj" + obj)を使用して表示すると、サーバー側で受け取ったオブジェクトは何ですか? –
@BandiKishore私は同じオブジェクトを受け取りますが、LinkedHashmapにキャストします – Syed
今問題が表示されます。 JSONObjectを使用する場合、ネストされたオブジェクトがある場合、これらのオブジェクトがネストされる方法に関する階層を知らないため、常にネストされたオブジェクトを格納するためにLinkedHashMapを使用します。 あなたのご要望では、**フィールド**は常に同じですか?この場合、これらのフィールドに対応するPOJOを作成し、そのオブジェクトを受け入れることができます。そうでなければ、これを達成するためにトランスを書くことができます。どちらのアプローチを取っておきたいか教えてください。私はそのための参考資料を提供することができます。 –