将 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
注释。两种方法都行。
所以我有这个包含 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
注释。两种方法都行。