0

JSONの形式でSpringControllerに応答を送信していますが、これを2つの異なるPOJOにマップしたいと思います。2つのpojoの結合データが含まれているため。どうすればいいですか。

JSONを送信するコード

$("#configure-buy-online").click(
        function(e) {
            var customProduct = '{"name":"Custom'
                + '","vcpu" : "'
                + $('#core')
                        .val()
                + '","ram" : "'
                + $('#ram')
                        .val()
                + '","hddSata":"'
                + $('#hddsata')
                        .val()
                + '"}';
            console.log("Product :"+ customProduct);
            $
            .ajax({
                type : 'POST',
                url : '../addToCartCustomize.do',
                dataType : 'json',
                contentType : 'application/json',
                data : customProduct,
                success : function(data) {
                    alert("Success");
                },
                error : function() {

                }
            });
        });

スプリングコントローラー

String addCustomProductToCart(@RequestBody CustomProduct customProduct)
{

}

Onepojoでそれを行う方法を知っています。しかし、同じJSONを2つのPojoにマップする方法がわかりません。

4

2 に答える 2

2

私はこれを行うJAX-RSまたは同様の方法を知りません。変更されていないJSONを(テキストとして)読み取り、Jacksonを直接使用します。

void doSomething(@RequestBody String pureJson) {
  ObjectMapper mapper = new ObjectMapper();  
  PojoA pojoA = mapper.readValue(pureJson, PojoA.class);
  PojoB pojoB = mapper.readValue(pureJson, PojoB.class);
}

または、次のようにPojoAをJSONに変換してからPojoBに変換することもできます。

void doSomething(@RequestBody PojoA pojoA) {
  ObjectMapper mapper = new ObjectMapper();  
  String pureJson = mapper.writeValueAsString(pojoA);
  PojoB pojoB = mapper.readValue(pureJson, PojoB.class);
}

しかし、これはもう少し複雑なIMOです。

于 2013-03-16T11:51:36.170 に答える
1

2つのPOJOを別のPOJO内にラップすることができます。

例えば。

class PapaPojo {

  private BabyPojo1 babyPojo1;

  private BabyPojo2 babyPojo2;
}

元の2つのPOJOはどこBabyPojo1にありますか。BabyPojo2

于 2013-03-16T12:02:57.943 に答える