2017-05-17 151 views
0

我一直試圖讓這個JSON一個POJO,這樣我可以隨意編組/解組,但我很難找到一個辦法做到這一點部分:傑克遜複雜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 
} 

正如你可以看到有一個「params」屬性,其中有兩個對象,其中一個是JSON數組。

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內的參數。我想我可以創建2個對象並將它們傳遞給它,但這使得它比我希望簡單的JSON編組/解組會更復雜。

有沒有簡單的方法來做到這一點?有沒有傑克遜?

+1

您需要另一個類,或者如果您不想命名和鍵入的屬性,則使用Map 。但是創建另外3個屬性的POJO又是如此複雜? –

回答

0

這是Param POJO會是什麼樣子,如果你希望它的模型(getter和setter方法除外):

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在所有或你不在乎關於該類型,則可以使用@JsonIgnoreProperties作爲基類,或者將params作爲Map<String, Object>作爲Map<String, Object>