将 JSON 数组转换为 Java 数组总是抛出空值

Converting JSON Array to Java Array always throws empty values

所以我有这个包含 ff 的变量 specCifDetailsReturn。有效载荷

[
{"ax21:cHType":"S",
"ax21:cardNumber":4***********7126,"ax21:returnCde":"00",
"ax21:cancelCode":"",
"ax21:vipCode":"",
"ax21:custrNbr":"0*****3426"},

{"ax21:cHType":"S",
"ax21:cardNumber":4***********3038,"ax21:returnCde":"00",
"ax21:cancelCode":"H",
"ax21:vipCode":"",
"ax21:custrNbr":"0*****3426"}
]

还有 ff。模型 Class 从 Array

中提取我需要的参数
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)
public final class SpecCifInfo {

    @JsonAlias("ax21:cHType")
    private String cHType;

    @JsonAlias("ax21:cardNumber")
    private String cardNumber;

}

我正在尝试将它转换为 Java ArrayList,以便我可以循环进入它并找到卡号。但出于某种原因,即使 specCifDetailsReturn 变量有值,它也总是在日志中抛出空值。下面是我的代码片段。

Gson gson = new Gson();
Type type = new TypeToken<List<SpecCifInfo>>(){}.getType();
ArrayList<SpecCifInfo> specDetails = gson.fromJson(specCifDetailsReturn.toString(),type);

for (SpecCifInfo specInfo : specDetails){
     LOGGER.debug("Spec CIF Details", specInfo.getCHType() + "-" + specInfo.getCardNumber());
            }

具有空值的 SpecCifInfo 对象的示例输出

这些注释是针对 Jackson 库的,而您正在手动使用 Gson。您应该保留它们并让 Spring 通过在控制器方法中指定 List<SpecCifInfo> 参数来为您处理反序列化,或者您应该使用 GSON 的 @SerializedName 注释。两种方法都行。