使用Apache Commons Digester和JSON

时间:2016-03-14 15:43:11

标签: java apache-commons apache-commons-digester

我正在编写一个类,该类扩展了一个使用Digester来解析来自API的XML响应的类(示例existing class,下面的代码片段)。收到响应后,代码会创建一个对象并在其上添加特定的方法。

为简洁起见而编辑的代码段:

      private Digester createDigester() {
        Digester digester = new Digester();

        digester.addObjectCreate("GeocodeResponse/result", GoogleGeocoderResult.class);
        digester.addObjectCreate("GeocodeResponse/result/address_component", GoogleAddressComponent.class);
        digester.addCallMethod("GeocodeResponse/result/address_component/long_name", "setLongName", 0);
...
        digester.addSetNext("GeocodeResponse/result/address_component", "addAddressComponent");

        Class<?>[] dType = {Double.class};
        digester.addCallMethod("GeocodeResponse/result/formatted_address", "setFormattedAddress", 0);
...
        digester.addSetNext("GeocodeResponse/result", "add");
        return digester;
      }
    }

我将调用的API仅支持JSON。我发现了一个可能的solution,它涉及将JSON转换为XML然后通过Digester运行它,但这看起来非常糟糕。

public JsonDigester(final String customRootElementName) {
    super(new JsonXMLReader(customRootElementName));
  }

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

此类专门用于根据文档处理XML:

  

基本上,Digester包允许您配置XML - &gt; Java的   对象映射模块,触发称为规则的某些操作   每当识别出嵌套XML元素的特定模式时。一个   您可以使用丰富的预定义规则集,也可以   也创建自己的。

为什么你认为它适用于JSON?