Jackson Complex Pojo

时间:2017-05-17 09:02:07

标签: java json jackson 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
}

正如你所看到的,有一个" params"具有2个对象的属性,其中一个对象是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中建模Params。我想我可以创建另外两个对象并将它们传递给它但是这比我希望简单的JSON编组/解组要复杂得多。

有一种简单的方法吗?有没有杰克逊?

1 个答案:

答案 0 :(得分:0)

这就是Param POJO的样子,如果你想对它进行建模(不包括吸气剂和固定剂):

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定义为{{1 }}