3

Spring MVC 3.1.1 でプロジェクトを継承しました。Jackson を使用してオブジェクトを JSON にシリアル化する必要があります。次のようなオブジェクトクラスがあります。

public class User {
    Integer id;
    String name;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

そして、次のようなコントローラー:

@Controller
@RequestMapping(value =  "/home")
public class homeController {
    @RequestMapping(value = "/")
    public @ResponseBody User home() {
        User user;
        user = new User();

        user.setId(1);
        user.setName("Drew");

        return user;
    }
}

/home に移動すると、次のようになります。

{"id":1,"name":"Drew"}

よし、これが最初の一歩だ。ここで、「id」パラメーターを無視したい場合は、Jackson のドキュメントに @JsonIgnore アノテーションを使用する必要があると記載されています。私が抱えている問題は、NetBeans が Jackson 用にインポートする注釈パッケージを見つけることができないため、注釈を使用できないことです。Jackson 2.2 jar をダウンロードしてプロジェクトに追加しようとしましたが (これにより、注釈をインポートできます)、@JsonIgnore 注釈はそれを行っても効果がありません。

Spring MVC の jar ファイルが不足しているか、プロジェクトの XML ファイルで何かを構成する必要があると思われます。私は Java に比較的慣れておらず、これまで Spring を使用したことがありません。そのため、必要だとは知らなかった役立つ追加情報があれば、お尋ねください。見つけるために最善を尽くします。ご協力いただきありがとうございます。

編集:

明確にするために、次のような注釈を使用してみました。

public class User {
    Integer id;
    String name;

    @JsonIgnore
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    @JsonProperty("userName")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

そしてこのように:

@JsonIgnoreProperties({"id"})
public class User {
    Integer id;
    String name;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    @JsonProperty("userName")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

返される JSON は常に同じです。

{"id":1,"name":"Drew"}
4

4 に答える 4

1

@JsonIgnore の代わりに @JsonIgnoreProperties を使用してみてください

于 2013-07-20T12:23:01.107 に答える
1

Spring 3.2.2 にアップグレードすることになり、Jackson 2.2 ライブラリと共に問題が修正されました。Jackson のすべての注釈が適切に機能するようになりました。これは、3.1.1 のインストールに何か問題があり、Jackson が台無しになったことを意味していると思いますが、誰が知っていますか?

回答してくれたすべての人に感謝します。

于 2013-07-22T21:18:53.817 に答える