2017-05-17 105 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>