升级至Play 2.8框架后Gson失效,如何用Java提取JSON?
Play 2.8 框架升级的JSON提取功能迁移
适配阶段的核心问题
项目升级至Play 2.8框架时,需要保留原有从JSON字符串中提取指定业务字段的能力,目前可参考的Java版本实现示例存量较少,适配过程中存在以下阻碍:
- 项目过往依赖的
com.google.gson库已不再被Play 2.8版本支持 - 原业务代码中使用的
JsonArray、JsonElement、JsonObject等Gson核心类无法正常加载、实例化与调用
待迁移的原有业务逻辑
原有基于Gson实现的字段提取方法如下,核心功能为聚合保单内嵌的pai信息并补充关联字段:
public static synchronized JsonArray getJsonPAIFromString(String jsonString) { JsonArray jsonPAIArray = new JsonArray(); if (jsonString!=null && !jsonString.isEmpty()) { JsonElement jelement = new JsonParser().parse(jsonString); JsonObject jobject = jelement.getAsJsonObject(); jobject = jobject.getAsJsonObject("result"); JsonArray jarray = jobject.getAsJsonArray("policyList"); for (int i = 0; i < jarray.size(); i++) { jobject = jarray.get(i).getAsJsonObject(); JsonObject pai = jobject.get("pai").getAsJsonObject(); pai.add("policyHolderId", jobject.get("policyHolderId")); pai.add("policyId", jobject.get("id")); pai.add("policyNumber", jobject.get("number")); jsonPAIArray.add(pai); Logger.debug("Response : \n" + pai.toString()); } } return jsonPAIArray; }
该方法的执行流程:校验入参JSON字符串的非空性,解析字符串后逐层定位到
result.policyList数组节点,遍历每一个保单节点,提取节点下的pai子对象,将保单对应的持有人ID、保单ID、保单号补充到pai对象中,最终将所有处理完成的pai对象聚合为数组返回。
内容的提问来源于stack exchange,提问作者Sneha
相关产品推荐
相关产品推荐

