将两种类型的json转换为同一个对象

时间:2015-01-06 18:35:48

标签: java json jackson

我正在为返回json的web服务api编写框架。我使用Jackson库来反序列化json字符串。 api返回一个属性以继续获取请求的结果。响应是这样的:

{
    continueToken:"token",
    results: [ 
                {
                },
             ]
}

所有回复都有这种结构。唯一的问题是continue属性的名称因请求而异。名字就像这样

prefix + "continue"

我想只创建一个类,并且能够将json映射到此类。我怎样才能做到这一点?这就是我想要的:

public class Response {
    private String continueToken;
    private List<Article> results;

    public Response (String continueToken, Article[] articles) {
         this.continueToken = continueToken;
         this.results = Arrays.asList(articles);
    }
}
//Here the name is ttcontinue
String json = request.get(type1);
Response r = jsonToResponse(json);

//Here the name is llcontinue
json = request.get(type2);
r = jsonToResponse(json);

1 个答案:

答案 0 :(得分:1)

嗯..你有一个动态字段名称,注解解决方案无法正常工作。假设没有其他JSON字段以&#34结尾;继续&#34; (在您的示例中保留),您可以按照以下步骤操作:

  1. this post
  2. 中一样迭代JSON键
  3. 使用field.getKey().endsWith("continue")查找所需的密钥
  4. 使用this post"continueToken"
  5. 的代码替换JSON节点中的密钥
  6. 现在获取您的Response对象