1

Java RESTful Web サービスがセットアップされている Glassfish サーバーに json contentType を取得する際に問題が発生しています。

Needle を使用して Node.js から POST します。

var options = {
    json: true,
    headers: {'Content-Type':'application/json'}
}

needle.post(base_url+'priorityList/',priorityList,options, function(err, resp, body){
});

ジャージで受け取る:

@POST
@Path("/priorityList/")
@Consumes(MediaType.APPLICATION_JSON)
//@Consumes("text/plain")
@Produces(MediaType.APPLICATION_JSON)

public JSONArray priorityList(JSONObject incomingJsonString)throws IOException {
}

そして、グラスフィッシュサーバーで次のエラーが発生します。

WARNING:   StandardWrapperValve[com.mycompany.recommenderenginejava.ApplicationConfig]: Servlet.service() for servlet com.mycompany.recommenderenginejava.ApplicationConfig threw exception
org.codehaus.jackson.map.exc.Unr`enter code here`ecognizedPropertyException: Unrecognized field "{"categories":["golf","banks"]}" (Class com.mycompany.recommenderenginejava.JSONObject), not marked as ignorable
 at [Source: org.glassfish.jersey.message.internal.EntityInputStream@4c0db744; line: 1, column: 43] (through reference chain: com.mycompany.recommenderenginejava.JSONObject["{"categories":["golf","banks"]}"])
    at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)
    at org.codehaus.jackson.map.deser.StdDeserializationContext.unknownFieldException(StdDeserializationContext.java:267)
    at org.codehaus.jackson.map.deser.std.StdDeserializer.reportUnknownProperty(StdDeserializer.java:673)

これは正しい形式である必要があるように見えますが、理解できず、機能させるために1000のことを試みました。

どんな助けでも大歓迎です

4

1 に答える 1

1

具体的なアドバイスが必要な場合は、com.mycompany.recommenderenginejava.JSONObject を投稿する必要がありますが、その答えは、JSON が解析しようとしているクラスと一致しないということです。JSON に、クラス定義でパブリック フィールドまたはセッターとして存在しないフィールド (「カテゴリ」) があります。

于 2013-10-16T16:46:37.677 に答える