我首先使用以下代码尝试使用 gson 序列化 Adwords API 中的 Campaign 实例:
Campaign c = new Campaign();
c.setName("beijing");
c.setId(23423L);
Gson gson = new Gson();
String json = gson.toJson(c);
我得到一个例外,即 Money 类声明了多个名为 __equalsCalc 的 JSON 字段。当我尝试使用下面的代码使用 struts2 的 json 插件序列化实例时
String str = org.apache.struts2.json.JSONUtil.serialize(c);
System.out.println(str);
它工作并输出正确的结果
{"adServingOptimizationStatus":null,"biddingStrategy":null,"budget":null,"campaignStats":null,"conversionOptimizerEligibility":null,"endDate":null,"frequencyCap":null,"id":23423,"name":"beijing","networkSetting":null,"servingStatus":null,"settings":null,"startDate":null,"status":null}
那么我的问题是,为什么struts2的json插件可以正确序列化实例而gson不能呢?我可以使用 struts2 的 json 插件将对象序列化为 json,因为它的设计目的是在 struts2 中生成 json 结果,而不是针对这种情况。