2017-05-17 11 views
0

私は意のままに/アンマーシャリングそれをマーシャリングできるように、POJOこのJSONをしようとしてきたが、私はその部分行うには方法を見つける難しさを持っている:あなたのようジャクソン複雑なPOJO

{ 
    "jsonrpc": "2.0", 
    "method": "deploy", 
    "params": { 
    "type": 1, 
    "chaincodeID": { 
     "path": "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" 
    }, 
    "ctorMsg": { 
     "args": [ 
     "init", 
     "a", 
     "1000", 
     "b", 
     "2000" 
     ] 
    }, 
    "secureContext": "lukas" 
    }, 
    "id": 1 
} 

をその中に2つのオブジェクトがJSON配列である「params」プロパティがあることがわかります。

public class JsonPayload { 
    private String jsonrpc; 
    private String method; 
    private ??? params; 
    private int id; 

    public JsonPayload(String jsonrpc, String method, ??? params, int id) { 
     this.jsonrpc = jsonrpc; 
     this.method = method; 
     this.params = params; 
     this.id = id; 
    } 

    public String getJsonrpc() { 
     return jsonrpc; 
    } 

    public void setJsonrpc(String jsonrpc) { 
     this.jsonrpc = jsonrpc; 
    } 

    public String getMethod() { 
     return method; 
    } 

    public void setMethod(String method) { 
     this.method = method; 
    } 

    public ??? getParams() { 
     return params; 
    } 

    public void setParams(??? params) { 
     this.params = params; 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 
} 

私の質問は、POJOの中でParamsをモデル化する方法です。私は2つのオブジェクトを作成してそれに渡すことができると思うが、単純なJSONマーシャリング/アンマーシャリングを望むよりもはるかに複雑になる。

これを行う簡単な方法はありますか?ジャクソンの有無にかかわらず?

class Params { 
    Integer type; 
    @JsonProperty("chaincodeID") 
    ChainCode chainCode; 
    @JsonProperty("ctorMsg") 
    private Message message; 
    String secureContext; 
} 

class ChainCode{ 
    String path; 
} 

class Message { 
    List<String> args; 
} 

はあなたがすべてでparamsを使用する予定がない場合、または、あなたは気にしない:

+1

名前付きの型指定された属性を必要としない場合は、Map が必要です。しかし、3つのプロパティを持つ別のPOJOを作成するのはとても複雑ですか? –

答えて

0

これは、あなたがそれをモデル化したい場合Param POJOは、次のようになります方法です(ゲッターとセッターを除きます)タイプについては、@JsonIgnorePropertiesを基底クラスに使用するか、として定義します。Map<String, Object>