如何在Java代码中动态生成和检索JSON?

时间:2013-03-22 05:30:16

标签: java json

我有一个用例,我们必须将不同的JSON发送到不同的服务器。

区别仅在于JSON密钥,密钥携带的含义相同,数据也是如此。

例如,服务器XYZ希望以这种格式发送JSON数据:

{ "firstName":"Sam", "lastName":"Jones"}

现在服务器ABC希望以这种格式发送JSON数据:

{ "fName":"Sam", "lName":"Jones"}

并通过POJO填充firstName和lastName数据。

那么,我该如何做到这一点?我不想用if-else条件来混淆代码。

但是wnat会有一些像动态加载的模板一样工作并创建JSON数据并将其恢复回POJO。

2 个答案:

答案 0 :(得分:0)

您应该创建两个POJO。每个服务器一个。每个POJO可以具有不同的属性名称,以满足每个服务器的要求。

或者POJO可以具有相同的属性名称,但需要注释以生成不同的JSON属性。像杰克逊这样的JSON库可以使用JsonProperty注释来完成此任务。

答案 1 :(得分:0)

这个策略怎么样?

1。定义要用作公共接口的接口..

interface People{
    public String getRegularFirstName();
    public String getRegularLastName();
}

2。使用已实现的接口

定义每个POJO

//“{”firstName“的类:”Sam“,”lastName“:”Jones“}”

class PeopleData2 implements People{
    private String firstName;
    private String lastName;

    public String getRegularFirstName(){
        return firstName;
    }
    public String getRegularLastName(){
        return lastName;
    }
    //getter setter here..
}

//“{”fName“的类:”Sam“,”lName“:”琼斯“}”

class PeopleData1 implements People{
    private String fName;
    private String lName;

    public String getRegularFirstName(){
        return fName;
    }
    public String getRegularLastName(){
        return lName;
    }
    //getter setter here..
}

3。使每个json格式都值得每个POJO类..

这不是dinamically策略,因为它需要添加新格式出现的类。 但它有助于系统可扩展性